1

我想知道它到底会在哪里中断,以及它会在此事件之前和之后执行什么 2 案例:行和函数

线路案例:

(gdb) break test.c:851

代码:

850 setup();
851 return configure();
852 

这会执行configure()吗?或不

功能案例:

(gdb) TestClass::initialize()

代码:

849 initialize(){
850 setup();
851 return configure();
852

它会执行 setup() 吗?

4

2 回答 2

3

根据我的经验,一旦上一行的代码完成,gdb 就会中断。您可以通过从断点单步执行来验证这一点,您将观察到配置函数中的代码将被执行,并且该值将返回到第 851 行,此时return关键字将启动并返回该值。

于 2013-03-07T15:16:08.547 回答
2

通常,在编译调试时,断点会在您所在的源代码行的第一条指令之前停止。但是,在优化代码时,内联和指令重新排列可能会导致不直观的结果。可以肯定的是,在汇编指令上设置断点。

通常它不会执行您的行或函数的第一行。但是您应该知道,在某些情况下可能并非如此。请注意,gdb 取决于提供给它的信息,因此结果可能因语言/编译器而异。

于 2013-03-07T15:23:29.073 回答