小编use*_*447的帖子

如何保存“设置 solib-search-path”

我想知道 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)

linux debugging gdb visualgdb

2
推荐指数
1
解决办法
1万
查看次数

为什么构造函数只调用一次?

我有一些代码。

#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构造函数调用了一次。

我知道“静态”关键字只使用相同的地址空间。

有一个“静态”关键字另一个我不知道的规范?

如果删除静态,此代码正在工作(构造函数调用两次)。

c++ c++14

1
推荐指数
1
解决办法
68
查看次数

标签 统计

c++ ×1

c++14 ×1

debugging ×1

gdb ×1

linux ×1

visualgdb ×1