我有两个函数,func1
并且func2
,每个函数都有一个断点集。
func2
如果前一个断点命中是,是否可以让 GDB 在断点处停止func1
?
最好的方法是在断点中使用命令。
当命中两个断点时,您可以指示 GDB 执行某些命令(例如,递增计数器)。根据这些变量/标志的计数有条件地停止执行。
我在这个链接上找到了这个信息。详情请参阅相同内容。这篇文章写得很好,有适当的例子。希望这可以帮助。
让一个断点设置另一个断点。为避免 gdb spaghetti 使用define
创建函数,建议使用。
int c1=0, c2=0;
void func1(){
c1++;
}
void func2(){
c2++;
}
int main(){
// we shouldn't see a breakpoint here
for(int i=0; i < 5; i++)
func1();
func2();
// get a breakpoint
func1();
return 0;
}
clang++ main.cpp -o main.exe -g
gdb --args ./main.exe
break func2
commands
break func1
# run a few commands when we hit func1()
commands
print c1
backtrace
end
# continue to func1() breakpoint
continue
end
run