如果是段错误,你能在Linux中获得任何程序来打印堆栈跟踪吗?
发布时间:2020-05-23 16:41:30 所属栏目:Linux 来源:互联网
导读:如果我从 shell运行程序,并且它是segfaults: $buggy_programSegmentation fault 然而,它会告诉我有没有办法让程序打印回溯,也许是通过运行这样的东西: $print_backtrace_if_segfault buggy_programSegfault in main.c:35(rest of the backtrace) 我也不愿意
|
如果我从 shell运行程序,并且它是segfaults: $buggy_program Segmentation fault 然而,它会告诉我有没有办法让程序打印回溯,也许是通过运行这样的东西: $print_backtrace_if_segfault buggy_program Segfault in main.c:35 (rest of the backtrace) 我也不愿意使用strace或ltrace来获取这类信息,因为它们会以任何方式打印…… 解决方法可能有更好的方法,但这种自动化方式.将以下内容放在/ backtrace中: backtrace quit 将它放在路径中目录中名为seg_wrapper.sh的脚本中: #!/bin/bash
ulimit -c unlimited
"$@"
if [[ $? -eq 139 ]]; then
gdb -q $1 core -x ~/backtrace
fi
ulimit命令使得核心被转储. “$@”是给脚本的参数,因此它将是您的程序及其参数. $?保持退出状态,139似乎是我的机器的段错误的默认退出状态. 对于gdb,-q表示安静(无介绍消息),-x告诉gdb在给定文件中执行命令. 用法 所以要使用它你只需: seg_wrapper.sh ./mycommand and its arguments 更新 您也可以编写一个执行此操作的信号处理程序,请参阅this link. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
