Qt代码编辑器中断点的实现
an implementation for breakpoint in code editor of Qt
我正在开发 IDE 用于在 Qt 中调试脚本和代码
我的职责是实现 GUI,Qt 文档中有一个很好的代码编辑器示例 url:http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html
所有引入的功能(如行号、突出显示和语法)
解释得很好,但是有一些关于实现断点作为代码编辑器文档的扩展的话说:
In addition to line numbers, you can add more to the extra area, for instance, break points.
我只是想知道,因为文档明确指出断点实现将是开发代码编辑器组件的下一步,但是当我用谷歌搜索和搜索网站时,我没有找到任何相关的文章或项目实现或将断点实现到 IDE 中的示例。
我只是想问问你是否知道关于这件事的任何例子或指南,如果你能帮助我解决这个问题我会很高兴,否则我会 sub-class 并自己实施它并在这里提出更详细的问题.
提前感谢阅读:)
更新
我最终实现了这样的功能:断点和断点区域、当前行 运行、跨步、进入、继续和其他调试器功能,我使用 PythonQt 作为 API 用于与 Python/C API 通信以调试我的脚本。
我使用 QTextBlockUserData 来实现断点数据及其方面,因此它将由块的数据本身管理。
这就是我最初要寻找的所有东西。如果有人有任何问题,我很乐意提供帮助。
我最好的猜测是检查 QtCreator 断点支持。
UI部分包含在这个class和其他:
https://github.com/qt-creator/qt-creator/blob/master/src/plugins/debugger/breakhandler.cpp
...而真正的逻辑取决于引擎。有不同的调试器引擎,例如 Windows 的 gdb、cdb、QML 调试器等)。
查看 gdb 引擎,在 MI 模式下有一个 gdb 进程 运行ning。这种模式使程序很容易解析 gdb 输出;尝试例如gdb -i=mi programToDebug
。此外,文档可能会有所帮助:ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_211.html.
Qt Creator 然后读取 gdb 进程的输出以显示调用堆栈等信息;参见例如https://github.com/qt-creator/qt-creator/blob/master/src/plugins/debugger/gdb/gdbengine.cpp#L244
所以我要做的是:
- 实现UI设置断点、启动调试器等
- 运行 自己的进程和机器模式下的调试器(如果可用)
- 连接该进程的输入/输出以设置断点、显示调用堆栈等
我正在开发 IDE 用于在 Qt 中调试脚本和代码 我的职责是实现 GUI,Qt 文档中有一个很好的代码编辑器示例 url:http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html
所有引入的功能(如行号、突出显示和语法) 解释得很好,但是有一些关于实现断点作为代码编辑器文档的扩展的话说:
In addition to line numbers, you can add more to the extra area, for instance, break points.
我只是想知道,因为文档明确指出断点实现将是开发代码编辑器组件的下一步,但是当我用谷歌搜索和搜索网站时,我没有找到任何相关的文章或项目实现或将断点实现到 IDE 中的示例。 我只是想问问你是否知道关于这件事的任何例子或指南,如果你能帮助我解决这个问题我会很高兴,否则我会 sub-class 并自己实施它并在这里提出更详细的问题.
提前感谢阅读:)
更新
我最终实现了这样的功能:断点和断点区域、当前行 运行、跨步、进入、继续和其他调试器功能,我使用 PythonQt 作为 API 用于与 Python/C API 通信以调试我的脚本。 我使用 QTextBlockUserData 来实现断点数据及其方面,因此它将由块的数据本身管理。 这就是我最初要寻找的所有东西。如果有人有任何问题,我很乐意提供帮助。
我最好的猜测是检查 QtCreator 断点支持。
UI部分包含在这个class和其他:
https://github.com/qt-creator/qt-creator/blob/master/src/plugins/debugger/breakhandler.cpp
...而真正的逻辑取决于引擎。有不同的调试器引擎,例如 Windows 的 gdb、cdb、QML 调试器等)。
查看 gdb 引擎,在 MI 模式下有一个 gdb 进程 运行ning。这种模式使程序很容易解析 gdb 输出;尝试例如gdb -i=mi programToDebug
。此外,文档可能会有所帮助:ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_211.html.
Qt Creator 然后读取 gdb 进程的输出以显示调用堆栈等信息;参见例如https://github.com/qt-creator/qt-creator/blob/master/src/plugins/debugger/gdb/gdbengine.cpp#L244
所以我要做的是:
- 实现UI设置断点、启动调试器等
- 运行 自己的进程和机器模式下的调试器(如果可用)
- 连接该进程的输入/输出以设置断点、显示调用堆栈等