[英]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.