Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当gcc中的应用程序在没有gdb的情况下崩溃时,如何生成stackdump和转储寄存器值? P>当我的C++应用程序崩溃时,我想生成堆栈转储和显示被丢弃的登记值。_C++_Gcc_Crash - Fatal编程技术网

当gcc中的应用程序在没有gdb的情况下崩溃时,如何生成stackdump和转储寄存器值? P>当我的C++应用程序崩溃时,我想生成堆栈转储和显示被丢弃的登记值。

当gcc中的应用程序在没有gdb的情况下崩溃时,如何生成stackdump和转储寄存器值? P>当我的C++应用程序崩溃时,我想生成堆栈转储和显示被丢弃的登记值。,c++,gcc,crash,C++,Gcc,Crash,我的应用程序在Linux上运行 我希望我的程序能够在崩溃时生成stackdump并显示转储的寄存器值,下次用户运行它时,它会询问他们是否可以将这些发送给我,以便我可以跟踪问题。我可以处理stacktrace信息,但我不知道如何生成这两个东西。有什么想法吗 提前感谢所有回复者 多谢各位 vlc这个问题的答案可能对您的情况有所帮助。但是答案中的代码打印一个stacktrace,并且只在SIGSEGV上注册。你可能需要做更多的工作来满足你的需要。这个问题的答案对你的情况可能有帮助。但是答案中的代码打印

我的应用程序在Linux上运行

我希望我的程序能够在崩溃时生成stackdump并显示转储的寄存器值,下次用户运行它时,它会询问他们是否可以将这些发送给我,以便我可以跟踪问题。我可以处理stacktrace信息,但我不知道如何生成这两个东西。有什么想法吗

提前感谢所有回复者

多谢各位
vlc

这个问题的答案可能对您的情况有所帮助。但是答案中的代码打印一个stacktrace,并且只在SIGSEGV上注册。你可能需要做更多的工作来满足你的需要。

这个问题的答案对你的情况可能有帮助。但是答案中的代码打印一个stacktrace,并且只在SIGSEGV上注册。你可能需要做更多的工作来满足你的需求。

几年前推出时引起了很大的轰动;我不确定它是否仍然流行,但标题确实提到了
libunwind
,它在我的Ubuntu系统上的包
libunwind7
-dev
中提供。几年前推出时引起了很大的轰动;我不确定它是否仍然流行,但标题确实提到了
libunwind
,它在我的Ubuntu系统上的包
libunwind7
-dev
中提供。嗨,vpit,非常感谢你的回答。你完全正确……但我需要打印寄存器和堆栈转储的转储值。我也做了。那么,在没有使用调试器的情况下,如何在应用程序中实现这一点呢。有什么想法吗???如果libsigsegv.so是按照上述方式构建的,并随应用程序一起提供给用户,他们将在SIGSEGV上看到stacktrace并注册状态。您的应用程序在构建时必须将
-rdynamic
传递给gcc。如果您希望在SIGSEGV之外的其他信号上崩溃,那么也为这些信号注册一个信号处理程序。不需要gdb。我使用这段代码捕获SIGSEGV,因为这是我的程序生成的最常见的异常。嗨,vpit,非常感谢你的回答。你完全正确……但我需要打印寄存器和堆栈转储的转储值。我也做了。那么,在没有使用调试器的情况下,如何在应用程序中实现这一点呢。有什么想法吗???如果libsigsegv.so是按照上述方式构建的,并随应用程序一起提供给用户,他们将在SIGSEGV上看到stacktrace并注册状态。您的应用程序在构建时必须将
-rdynamic
传递给gcc。如果您希望在SIGSEGV之外的其他信号上崩溃,那么也为这些信号注册一个信号处理程序。不需要gdb。我使用这段代码捕获SIGSEGV,因为这是我的程序生成的最常见的异常。