不管怎样,我的 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 很简单:您只需 openread 即可。

重要的是理解内容的含义。 core 文件是一个 ELF 文件,因此它有很多内部结构,libelf 等库可以帮助您阅读 core 的特定部分。

但这距离 GDB 的功能还有 的距离:要真正理解内容,您还需要实施符号管理,堆栈展开,以及更多的东西。简而言之,您将不得不重新实现一半的 GDB。

那么为什么不直接使用 GDB?您可以从您的应用程序与 GDB 对话,并让它为您提供所需的答案。 GDB 有一个特殊的 machine interface mode 用于此目的。