相关疑难解决方法(0)

如果帧处于回溯状态,则GDB中断

我想在gdb断点上设置一个条件,只有在回溯中出现某个函数名时才会中断.最好的方法是什么?

gdb conditional-breakpoint

12
推荐指数
1
解决办法
1656
查看次数

gdb:仅当调用函数不等于某个值时才有条件地中断函数

在我的项目中,我有调用malloc()的my_malloc().

我喜欢在gdb中设置条件断点,这样只有当malloc()的调用函数不等于my_mallc()时,gdb才会进入"gdb>".

可能吗?

目标是识别所有直接调用malloc()的代码,而不是通过my_malloc().

c linux gdb

7
推荐指数
1
解决办法
508
查看次数

GDB可以在一系列函数调用上设置断点吗?

我想在崩溃发生之前检查一些全局变量。该问题仅在特定的堆栈跟踪中重现,并且在最内层函数(或堆栈中的任何其他函数)上设置断点将无法使我足够接近。

仅当堆栈顶部包含类似内容时,我才能达到中断的结果吗?

#0 __GI_connect
#1 curl_connect
#2 get_file
#3 init_assets
Run Code Online (Sandbox Code Playgroud)

只是做

b init_assets
c
b get_file
c
...
Run Code Online (Sandbox Code Playgroud)

由于多次调用init_assets且不会每次都调用curl,因此无法正常工作,因此gdb会中断使用curl的无关代码。

以后编辑:另一种方法是:

b inner_func
ignore 1 10000
r
# app crashes
info b

Breakpoint 1 has been hit 10 times.
Run Code Online (Sandbox Code Playgroud)

然后删除断点,将其重新添加,仅忽略9次。再次运行该应用程序时,gdb将在第10次停止-当inner_func崩溃时。

rr如果执行差异太大,您也可以将应用程序记录在mozilla中。

debugging gdb breakpoints gdb-python

2
推荐指数
1
解决办法
152
查看次数