qt - Qt代码编辑器中断点的实现
问题描述
我正在开发一个用于调试 Qt 中的脚本和代码的 IDE,我的职责是实现 GUI,并且此 url 中有一个非常好的 Qt 文档中的代码编辑器示例:http: //doc.qt.io/qt-5 /qtwidgets-widgets-codeeditor-example.html
所有引入的功能(如行号和突出显示和语法)都得到了很好的解释,但是有一些关于实现断点作为代码编辑器文档的扩展的话:
除了行号之外,您还可以向额外区域添加更多内容,例如断点。
我只是想知道,因为文档明确指出断点实现将是开发代码编辑器组件的下一步,但是当我用谷歌搜索和搜索网站时,我没有找到任何具有相关实现的文章或项目或示例在 IDE 中实现断点。我只是想问一下您是否知道有关此问题的任何示例或指南,如果您能帮助我完成此操作,我将非常高兴,否则我将进行子类化并自己实现它,并在这里提出更详细的问题。
提前感谢您的阅读:)
更新
我最终实现了这样的功能,例如:断点和断点区域、正在运行的当前行、跳过、步入、继续和其他调试器功能,我使用 PythonQt 作为与 Python/C API 通信的 API 来调试我的脚本. 我使用 QTextBlockUserData 来实现断点数据及其方面,因此它将由块的数据本身管理。这就是我首先要寻找的所有东西。如果有人有任何问题,我很乐意提供帮助。
解决方案
我最好的猜测是检查 QtCreator 断点支持。
UI 部分包含在此类和其他类中:
https://github.com/qt-creator/qt-creator/blob/master/src/plugins/debugger/breakhandler.cpp
...而真正的逻辑取决于引擎。有不同的调试器引擎,如 gdb、Windows 的 cdb、QML 调试器等)。
查看gdb引擎,有一个gdb进程在MI模式下运行。这种模式使程序可以很容易地解析 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 以设置断点、启动调试器等。
- 在自己的进程和机器模式下运行调试器(如果可用)
- 连接该进程的输入/输出以设置断点、显示调用堆栈等。
推荐阅读
- reactjs - 输入标签不在选择下拉框的中心
- excel - 同一范围内的最后 2 行
- python - 解决问题 - 编码面试问题?
- sql - 如何查询表中的传递匹配?
- c# - 如何在异步数据库连接期间避免“访问冲突”?
- linux - 从数据文件的每一行中提取 2 个字段并插入到外部程序中
- typescript - 将自引用作为抽象基类静态函数中的参数传递给子类
- swift - 为什么 Xcode 会为选择器添加自动完成方法?
- java - 来自 nginx 的请求失败,状态码为 504
- tensorflow - 我得到“启用急切执行时,Tensor.op 毫无意义。” 在我的简单编码器模型中。(TF 2.0)