繁体   English   中英

如何使用 GDB 在可执行文件的 c++ 代码的第一行停止?

[英]How to use GDB to stop at the first line of c++ code of an executable?

我有一个 C++ 项目。 使用 CMake 在调试模式下编译后,它会生成许多可执行文件。

我想调试一个可执行文件,假设它名为 A。

但是我不确定A的主function在哪里,所以我想用gdb调试A,想停在它的主函数的第一行。 我应该怎么做? 非常感谢!

要简单地运行直到我们到达 main,我们可以简单地

> start

这将在 main 处设置一个临时断点并开始执行。

如果您总是想在 main 处中断,即使您重新启动程序,您也可以添加一个持久断点并运行。

>b main
>run

因为我们可能在 main 之前运行了很多代码,特别是如果需要全局对象的构造函数,那么在程序的第一条指令上就开始使用是有意义的。 在这种情况下,我们可以使用

> starti

这将在第一个执行的汇编指令处停止

如果我们知道这里的符号名称,我们也可以 go 到启动过程的专用部分。 一个示例是_init ,如果需要,您也可以在其上停止。 要获得更详细的可能断点列表,请参阅: gcc 初始化

如果您需要在已知的构造函数上停止,您还可以在 class 类型的所有构造函数上设置断点,前提是您只需使用构造函数名称,此处以class A为例。 如果在main启动之前创建了全局 object,这将非常有用。 如果您有依赖的全局对象可能会失败,这很有帮助,因为我们都知道static 初始化顺序惨败

>b A::A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM