如何调试触发 gdb 内部错误的 C++ 程序?
How to debug C++-Program which triggers internal bug in gdb?
在我的一个 C++ 项目中,我发现了一个与链接库相关的问题,该问题会在启动已编译的可执行文件后直接导致段错误。我尝试使用 gdb 深入研究该问题,但失败并显示输出:
../../gdb/dwarf2/read.c:1857: internal-error: bool dwarf2_per_objfile::symtab_set_p(const dwarf2_per_cu_data*) const: Assertion `per_cu->index < this->m_symtabs.size ()' failed.
发生内部错误后我无能为力(除了报告),但我仍然希望能够调试程序本身。我有哪些选择?
- 使用与 gdb 不同的调试器?
- 手动更新到较新版本的 gdb(当前为 10.1)?
- 如何在段错误损坏调试器之前捕获它?
- ?
很可能这已经修复了 gdb 错误:https://sourceware.org/bugzilla/show_bug.cgi?id=28160。它有 Target Milestone 11.1,所以更新到最新版本的 gdb,现在是 11.1。它应该在该版本中得到修复。
在我的一个 C++ 项目中,我发现了一个与链接库相关的问题,该问题会在启动已编译的可执行文件后直接导致段错误。我尝试使用 gdb 深入研究该问题,但失败并显示输出:
../../gdb/dwarf2/read.c:1857: internal-error: bool dwarf2_per_objfile::symtab_set_p(const dwarf2_per_cu_data*) const: Assertion `per_cu->index < this->m_symtabs.size ()' failed.
发生内部错误后我无能为力(除了报告),但我仍然希望能够调试程序本身。我有哪些选择?
- 使用与 gdb 不同的调试器?
- 手动更新到较新版本的 gdb(当前为 10.1)?
- 如何在段错误损坏调试器之前捕获它?
- ?
很可能这已经修复了 gdb 错误:https://sourceware.org/bugzilla/show_bug.cgi?id=28160。它有 Target Milestone 11.1,所以更新到最新版本的 gdb,现在是 11.1。它应该在该版本中得到修复。