小编Geo*_*rge的帖子

如何在Linux中获取C函数的手册页而不是bash命令的手册?

如何在Linux中获取C函数的手册页而不是shell命令手册?

例如,当我输入时,man bind我获取shell命令绑定的man而不是插件绑定C函数的man.

c linux manpage

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

为什么我在检查核心转储时进入gdb"无法访问地址0x的内存..."?

当我在分析核心转储时尝试打印以下行时,我收到此消息.

(gdb) p/x *($esi)
Cannot access memory at address 0xe6d3a030
Run Code Online (Sandbox Code Playgroud)

我提到指出的地址%esi (0xe6d3a030)应该指向一些有效的分配数据.(当我自己运行这个程序并打破相同的指令时,这个打印有一些有意义的信息)

造成这种情况的可能原因是什么?我错过了核心转储中的一些信息吗?

如果是,我错过了什么信息?核心转储不应包含所有已分配内存的快照吗?

编辑:当我在加载coredump时使用gdb"维护信息部分"命令时,我得到的信息如下所示.我可以看到地址0xe6d3a030在范围内 0xe6d00000->0xe6dfb000 at 0x0f5aa000: load93 ALLOC LOAD HAS_CONTENTS这是不是意味着它被加载了?

(gdb) maintenance info sections 
Exec file:
    `/home/Administrator/Documents/coredump/myproc-debug-8.1.bin', file type elf32-i386.
    0x8048134->0x8048147 at 0x00000134: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
    0x8048148->0x8048168 at 0x00000148: .note.ABI-tag ALLOC LOAD READONLY DATA HAS_CONTENTS
    0x8048168->0x804818c at 0x00000168: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
    0x804818c->0x80acd94 at 0x0000018c: .gnu.hash ALLOC LOAD READONLY DATA HAS_CONTENTS
    0x80acd94->0x8180d14 at 0x00064d94: .dynsym ALLOC LOAD READONLY DATA HAS_CONTENTS …
Run Code Online (Sandbox Code Playgroud)

c++ assembly gdb coredump memory-management

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

如何从核心转储中获取系统时间?

我有一个分段错误后生成的核心转储.有没有办法在gdb(或其他方式)看到发生这种情况时的系统时间?

我无法使用核心转储文件的创建时间,因为它是在没有此元信息的情况下发送给我的.

c++ linux gdb coredump segmentation-fault

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

为什么析构函数为同一个对象调用了两次?

在以下来自核心转储A2的回溯中:~A2被调用两次:

#0  0x086f5371 in B1::~B1 (this=0xe6d3a030, 
    __in_chrg=<value optimized out>)
    at /fullpath/b1.cpp:400
#1  0x086ffd43 in ~B2 (this=0xe6d3a030, 
    __in_chrg=<value optimized out>)
    at /fullpath/b2.h:21
#2  B2::~B2 (this=0xe6d3a030, 
    __in_chrg=<value optimized out>)
    at /fullpath/b2.h:21
#3  0x086ea516 in A1::~A1 (this=0xe3e93958, 
    __in_chrg=<value optimized out>)
    at /fullpath/a1.cpp:716
#4  0x0889b85d in A2::~A2 (this=0xe3e93958, 
    __in_chrg=<value optimized out>)
    at /fullpath/a2.cpp:216
#5  0x0889b893 in A2::~A2 (this=0xe3e93958, 
    __in_chrg=<value optimized out>)
    at /fullpath/a2.cpp:216
#6  0x0862c0f1 in E::Identify (this=0xe8083e20, t=PT_UNKNOWN)
    at /fullpath/e.cpp:713
Run Code Online (Sandbox Code Playgroud)

A2来自A1,B2来自B1.只有B2有一个默认的析构函数,所有基类析构函数都是虚拟的.

代码看起来像这样:

e.cpp:

E::E(){
    //... some code ...
    myA1= new A2();
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ gdb

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