c++ - 如何调试触发gdb内部错误的C++程序?
问题描述
在我的一个 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。它应该在该版本中修复。
推荐阅读
- python - python-selenium,使用 xpath
- javascript - 如何为需要某种特定类型并接收“任何”的函数触发 Typescript 类型错误?
- sparklyr - 使用 sparklyr 包安装 spark 时出错
- postgresql - 从 postgres 将数据保存到文件 txt 或 csv
- azure - 我可以使用 Azure DevOps CI/CD 在虚拟机的 IIS 网站(而不是旁边托管的其他网站)中部署网站吗?
- mongodb - Mongodb 查询给出错误:表达式 $gt 恰好需要 2 个参数。1个被通过
- image - 在 gitlab 管道中执行 testcontainer 集成测试
- python - 设置 venv 时 Python SDK 无效
- java - 如何在 Retrofit 中将参数传递给 POST 请求 - Android
- python - 在 django 的个人资料页面上显示单个用户的所有内容