在 GDB (C++) 中找到指向单例事后分析的指针

tec*_*ack 5 c++ linux gdb postmortem-debugging

我正在对崩溃的程序进行事后分析。我在 Linux (Ubuntu 12.04, x86) 上,代码是用 C++ 编写的。本程序正在使用一些可能包含有价值信息的单例。如果像这样创建,是否可以找到指向单例实例的指针:

SingletonType& SingletonType::getInstance(){
    static SingletonType* instance = new SingletonType();
    return *instance;
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,它是如何在 GDB 中完成的?

tfk*_*tfk 4

使用 core 文件运行 gdb,然后运行命令

disassemble  SingletonType::getInstance
Run Code Online (Sandbox Code Playgroud)

在我的测试程序中,我mov 0x<addr>, %eax在方法末尾附近发现了一条指令。Aprint *(*(SingletonType**) <0xaddr>)应该打印单例结构的内容。