我正在使用GCC编译器在Linux上工作.当我的C++程序崩溃时,我希望它能自动生成一个堆栈跟踪.
我的程序由许多不同的用户运行,它也可以在Linux,Windows和Macintosh上运行(所有版本都使用编译gcc).
我希望我的程序能够在崩溃时生成堆栈跟踪,并且在用户下次运行它时,它会询问他们是否可以将堆栈跟踪发送给我,以便我可以追踪问题.我可以处理向我发送信息,但我不知道如何生成跟踪字符串.有任何想法吗?
我正在GDB中进行一些汇编级调试.有没有办法让GDB以与显示当前源代码行相同的方式向我显示当前的汇编指令?每个命令后的默认输出如下所示:
0x0001433f 990 Foo::bar(p);
Run Code Online (Sandbox Code Playgroud)
这给了我当前指令的地址,但是我必须继续参考输出,disassemble以便查看我当前正在执行哪条指令.
当我的应用程序崩溃时出现分段错误,我想从系统中获取核心转储.我通过先手配置来做到这一点
ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)
我还想在我的应用程序日志中指出已发生分段错误.我这样做是通过使用sigaction().但是,如果我这样做,则信号不会达到其默认处理,并且不会保存核心转储.
如何让系统核心同时从我自己的信号处理程序转储日志行?
我正在做以下事情:
gdb -p $progid -x $file
>> cat file
>> handle SIGUSR1 nostop
c
Run Code Online (Sandbox Code Playgroud)
如何处理nostop的所有信号而不必写:
handle SIGUSR1 nostop
handle SIGUSR2 nostop
Etc...
Run Code Online (Sandbox Code Playgroud)