如何让GDB在回溯(backtrace)时自动展开参数显示实际值?
让GDB在栈回溯中直接展开参数的方法
嘿,这个问题我之前调试的时候也碰到过!GDB默认会把复杂类型的参数(比如你这里的src、to,看起来像是自定义类或者STL容器)显示成...,不过有几个简单的办法能让它直接在栈回溯里展开参数值,不用单独打印:
全局永久生效的设置:
在GDB里输入命令:set print frame-arguments all这个命令会让GDB在所有后续的栈回溯(
bt)中,自动展开显示所有参数的实际值。如果想每次启动GDB都自动生效,可以把这条命令加到你的~/.gdbinit配置文件里。临时查看详细回溯:
如果你不想修改全局设置,只是偶尔需要看一次详细的参数,直接用bt full命令就行:bt full这个命令不仅会显示栈帧的参数,还会列出每个栈帧里的局部变量,信息更全面,但如果栈层级比较多,输出可能会有点冗长。
灵活调整显示范围:
要是你只想展开标量类型的参数(比如int、指针),不想看复杂对象的冗长内容,可以用:set print frame-arguments scalar想回到默认的省略显示,就输入:
set print frame-arguments none
举个例子,你设置完set print frame-arguments all之后再执行bt,应该就能看到src和to的具体值,而不是...了。
内容的提问来源于stack exchange,提问作者Erez
相关产品推荐
相关产品推荐

