我想知道它究竟会在哪里打破,以及它会在此事件之前和之后执行什么 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()吗?
答案 0 :(得分:3)
根据我的经验,一旦前一行的代码完成,gdb就会中断。您可以通过从断点处步进来验证这一点,您将观察到configure函数中的代码将被执行,并且值将返回到第851行,此时return
关键字将启动并返回该值。
答案 1 :(得分:2)
通常,断点在之前停止编译为调试时所在源代码行的第一条指令。但是,在优化代码时,内联和指令重新排列可能会导致unintuitive results。可以肯定的是,在汇编指令上设置断点。
通常它不会执行您的行或函数的第一行。但是你应该知道,在某些情况下可能并非如此。请注意,gdb依赖于提供给它的信息,因此结果可能因语言/编译器而异。