Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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
C++ 对于gcc,启用核心转储是否需要-g?_C++_C_Gcc_Coredump - Fatal编程技术网

C++ 对于gcc,启用核心转储是否需要-g?

C++ 对于gcc,启用核心转储是否需要-g?,c++,c,gcc,coredump,C++,C,Gcc,Coredump,为了在运行中的程序异常退出时能够从中创建核心转储,是否需要在编译期间为gcc指定调试选项-g?否,您的程序将可以进行核心转储。但是,它将缺少调试符号,这意味着很难将核心转储与原始代码匹配。不,您的程序将很好地进行核心转储。但是,它将缺少调试符号,这意味着很难将核心转储与原始代码匹配。不,这是两件不同的事情。然而,启用调试信息可能是一个好主意,因为它使核心转储更加有用 如果您遇到可执行文件已发送给客户的情况,或者由于其他原因不想发送调试信息,那么您仍然需要使用-g标志进行构建,然后从可执行文件中删

为了在运行中的程序异常退出时能够从中创建核心转储,是否需要在编译期间为gcc指定调试选项-g?

否,您的程序将可以进行核心转储。但是,它将缺少调试符号,这意味着很难将核心转储与原始代码匹配。

不,您的程序将很好地进行核心转储。但是,它将缺少调试符号,这意味着很难将核心转储与原始代码匹配。

不,这是两件不同的事情。然而,启用调试信息可能是一个好主意,因为它使核心转储更加有用

如果您遇到可执行文件已发送给客户的情况,或者由于其他原因不想发送调试信息,那么您仍然需要使用-g标志进行构建,然后从可执行文件中删除调试信息并发送

这样,您将得到两个可执行文件,一个没有您提供的调试信息,另一个带有您存档的信息。这将使您能够在程序崩溃时分析内核转储。您只需向调试器提供未剥离的可执行文件,而不是实际使用的(剥离的)可执行文件


如果您的构建过程是确定性的,那么另一种选择就是归档源代码(例如通过使用修订控制系统)。然后,您应该能够通过重建(现在使用-g标志)来创建调试信息。这不是一个好主意,因为有很多原因,构建系统是不确定性的-考虑更多的机会,能够恢复的情况下,你忘了-G标志。< /P> < P>不,这是两个不同的事情。然而,启用调试信息可能是一个好主意,因为它使核心转储更加有用

如果您遇到可执行文件已发送给客户的情况,或者由于其他原因不想发送调试信息,那么您仍然需要使用-g标志进行构建,然后从可执行文件中删除调试信息并发送

这样,您将得到两个可执行文件,一个没有您提供的调试信息,另一个带有您存档的信息。这将使您能够在程序崩溃时分析内核转储。您只需向调试器提供未剥离的可执行文件,而不是实际使用的(剥离的)可执行文件


如果您的构建过程是确定性的,那么另一种选择就是归档源代码(例如通过使用修订控制系统)。然后,您应该能够通过重建(现在使用-g标志)来创建调试信息。这不是一个好主意,因为有很多原因,构建系统是不确定性的-考虑更多的机会,能够恢复的情况下,你忘了-G标志。如果没有-g,内核转储对调试没有用处吗?核心转储可以用于什么?您仍然可以从核心转储中提取一些信息,但无法将核心转储中的任何内容与源文件中的任何符号名称进行匹配。谢谢。如果没有-g,内核转储对调试没有用处吗?核心转储可以用于什么?您仍然可以从核心转储中提取一些信息,但无法将核心转储中的任何内容与源文件中的任何符号名称进行匹配。