我想知道 linux gdb 调试。
我有 1 个执行文件,1 个核心转储文件。所以,我像这样在linux中打开它,
gdb exefilename -c exefuilename.core
Run Code Online (Sandbox Code Playgroud)
但是,我只显示错误消息。
warning: Could not load shared library symbols for 44 libraries, e.g. /usr/local/lib/libboost_system.so.1.55.0.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
Run Code Online (Sandbox Code Playgroud)
所以,我输入命令,
set solib-search-path /librarypath/
Run Code Online (Sandbox Code Playgroud)
和符号读取成功。并且,我输入命令
quit
Run Code Online (Sandbox Code Playgroud)
并且,我重新打开转储文件。像这样,
gdb exefilename -c exefuilename.core
Run Code Online (Sandbox Code Playgroud)
但仍然显示相同的错误消息。
warning: Could not load shared library symbols for 44 libraries, e.g. /usr/local/lib/libboost_system.so.1.55.0.
Use the "info sharedlibrary" command to see the complete listing.
Do you need …Run Code Online (Sandbox Code Playgroud) 我有一些代码。
#include <iostream>
#include <memory>
using namespace std;
class A
{
public:
A() { cout << "called" << endl; }
};
A* foo()
{
static A* a = new A();
return a;
}
int main()
{
A *p = foo();
cout << std::addressof(*p) << endl;
A *pp = foo();
cout << std::addressof(*pp) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我调用了 foo() 两次。
但是类A构造函数调用了一次。
我知道“静态”关键字只使用相同的地址空间。
有一个“静态”关键字另一个我不知道的规范?
如果删除静态,此代码正在工作(构造函数调用两次)。