如何在gdb查看coredump时自动执行脚本命令并关闭分页提示
解决方法
1. 关闭GDB分页提示
临时生效(单次调试有效)
在GDB交互界面执行命令:set pagination off
如果要启动时直接生效,也可以在启动命令中加参数:gdb -c dump -ex "set pagination off"
永久生效(所有GDB调试默认关闭分页)
编辑用户目录下的.gdbinit文件(不存在就新建),添加一行内容:set pagination off
保存后重启GDB,就会默认跳过分页提示,不会再出现按回车继续的交互提示。
2. 自动执行常用GDB命令
有两种成熟方案可以实现命令自动执行:
方案一:直接通过命令行参数传递命令
GDB支持用-ex参数指定启动后自动执行的命令,你可以直接把要执行的命令都拼在启动命令里:
gdb -c dump \ -ex "set pagination off" \ -ex "symbol-file libsmth.so" \ -ex "sharedlibrary" \ -ex "bt"
启动后会自动按顺序执行所有命令,输出完调用栈后停在GDB交互界面;如果要执行完命令直接退出GDB,还可以在最后加一个-ex "quit"参数。
方案二:编写GDB脚本复用命令
如果你的命令序列比较复杂,或者经常需要调整,可以把命令单独写进GDB脚本文件:
- 新建脚本文件比如
analyze_coredump.gdb,写入以下内容:
set pagination off symbol-file libsmth.so sharedlibrary bt # 如果需要执行完自动退出可以放开下面这行 # quit
- 调试时用
-x参数加载脚本执行:gdb -c dump -x analyze_coredump.gdb
如果想进一步简化操作,还可以把上面的逻辑包装成shell脚本,支持直接传入coredump文件路径:
新建coredump_analyze.sh,写入:
#!/bin/bash if [ $# -ne 1 ];then echo "用法:$0 <coredump文件路径>" exit 1 fi gdb -c "$1" -x /path/to/analyze_coredump.gdb
给脚本加执行权限chmod +x coredump_analyze.sh后,直接执行./coredump_analyze.sh ./dump即可完成自动分析。
内容的提问来源于stack exchange,提问作者y.selivonchyk
相关产品推荐
相关产品推荐

