调试已发布软件的 c++ 核心文件
Debugging c++ core files for released software
我正在尝试找到一种方法来调试从我的软件的已发布版本(使用 gcc 编译的 c++ 代码)发送给我的核心文件。理想情况下,我希望能够部署发布版本,并保留调试版本以用于调试,所以我有符号表等。
我的问题是(据我了解)调试和发布版本不能保证相同 - 因此当我启动 gdb 并指向我的调试可执行文件时,来自现场的核心文件可能看起来像垃圾。
有没有办法在不影响我发布的软件的大小或性能的情况下解决这个问题(这就是问题所在)?这是一个大型应用程序,客户可能无法接受调试版本的性能。我已经查看了构建一次(调试)的建议,然后剥离符号表并将其作为发布版本发布,但我会看到这种方法对性能的影响,不是吗?
有没有人对他们已经尝试或目前正在使用的东西有解决这个问题的建议?谢谢!
您可以在启用优化的情况下进行编译和链接,但仍会生成调试符号 ( -O3 -g
),然后提取调试符号。这样,您将拥有调试符号,但可以在没有它们的情况下发布,并且您不会受到性能损失或其他原因。请参阅如何在构建目标之外生成 gcc 调试符号?关于如何做到这一点。
相关文章:
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 在c++中初始化矩阵时出现分段错误(核心转储)
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- MPI突然停止了对多个核心的操作
- 在多个核心中处理一个HTTP请求
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 运算符继承和 cpp 核心准则 c.128 的问题
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 我不知道为什么这段代码会让核心被转储?
- 比特币核心libbitcoin_server_a-httpserver.o 错误
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- 合并排序:分段错误核心转储