不管怎样,我的 C++ 应用程序可以与 GDB 通信吗?
Anyway for my c++ application to communicate with GDB?
我想读取一个用 gcore 转储的核心转储文件。
但是,我想在我的 C++ 应用程序中读取一个核心转储文件,而不是使用 gdb 终端命令。
例如,我有一个可执行程序 'testEx',它由于某种原因被杀死,然后 'testEx' 留下了核心转储。
我正在创建一个 C++ 应用程序 'readGDB' 来分析 'testEx' 创建的核心转储。
任何读取核心文件的 C++ 库和示例?
Any c++ library and example to read a core file?
阅读 core
很简单:您只需 open
和 read
即可。
重要的是理解内容的含义。 core
文件是一个 ELF
文件,因此它有很多内部结构,libelf
等库可以帮助您阅读 core
的特定部分。
但这距离 GDB 的功能还有 长 的距离:要真正理解内容,您还需要实施符号管理,堆栈展开,以及更多的东西。简而言之,您将不得不重新实现一半的 GDB。
那么为什么不直接使用 GDB?您可以从您的应用程序与 GDB 对话,并让它为您提供所需的答案。 GDB 有一个特殊的 machine interface mode 用于此目的。
我想读取一个用 gcore 转储的核心转储文件。
但是,我想在我的 C++ 应用程序中读取一个核心转储文件,而不是使用 gdb 终端命令。
例如,我有一个可执行程序 'testEx',它由于某种原因被杀死,然后 'testEx' 留下了核心转储。
我正在创建一个 C++ 应用程序 'readGDB' 来分析 'testEx' 创建的核心转储。
任何读取核心文件的 C++ 库和示例?
Any c++ library and example to read a core file?
阅读 core
很简单:您只需 open
和 read
即可。
重要的是理解内容的含义。 core
文件是一个 ELF
文件,因此它有很多内部结构,libelf
等库可以帮助您阅读 core
的特定部分。
但这距离 GDB 的功能还有 长 的距离:要真正理解内容,您还需要实施符号管理,堆栈展开,以及更多的东西。简而言之,您将不得不重新实现一半的 GDB。
那么为什么不直接使用 GDB?您可以从您的应用程序与 GDB 对话,并让它为您提供所需的答案。 GDB 有一个特殊的 machine interface mode 用于此目的。