小编dav*_*epc的帖子

将libc回溯转换为源行号

我有一个MPI应用程序,它结合了C和Fortran源.偶尔它会因为与内存相关的bug而崩溃,但是我无法找到这个bug(它是在别人的代码中的某个地方,目前我还不是很熟悉).我还没有能够用gdb捕获它,但有时会输出glibc backtrace,如下所示.

该错误可能接近"(main_main_ + 0x3bca)[0x804d5ce]",(但有内存错误,我知道情况可能并非如此).我的问题是,有没有人知道如何将+ 0x3bca或0x804d5ce转换为代码的特定行?

关于追踪错误的任何其他建议也将受到赞赏.我非常熟悉gdb的基础知识.

*** glibc detected *** /home/.../src/finite_element: munmap_chunk(): invalid pointer: 0x09d83018 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x73e42)[0xb7409e42]
/lib/i386-linux-gnu/libc.so.6(+0x74525)[0xb740a525]
/home/.../src/finite_element(main_main_+0x3bca)[0x804d5ce]
/home/.../src/finite_element[0x804e195]
/home/.../src/finite_element(main+0x34)[0x804e1e8]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb73af4d3]
/home/davepc/finite-element/src/finite_element[0x8049971]
======= Memory map: ========
08048000-08056000 r-xp 00000000 08:05 1346306    /home/.../src/finite_element
08056000-08057000 r--p 0000d000 08:05 1346306    /home/.../src/finite_element
08057000-08058000 rw-p 0000e000 08:05 1346306    /home/.../src/finite_element
09d1b000-09d8f000 rw-p 00000000 00:00 0          [heap]
b2999000-b699b000 rw-s 00000000 08:03 15855      /tmp/openmpi-sessions-_0/37612/1/shared_mem_pool.babel
b699b000-b6b1d000 rw-p 00000000 00:00 0 
b6b31000-b6b3d000 r-xp 00000000 08:03 407798     /usr/lib/openmpi/lib/openmpi/mca_osc_rdma.so
b6b3d000-b6b3e000 r--p 0000b000 08:03 407798     /usr/lib/openmpi/lib/openmpi/mca_osc_rdma.so
b6b3e000-b6b3f000 rw-p …
Run Code Online (Sandbox Code Playgroud)

c debugging fortran gdb mpi

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

如何将 --whole-archive 与 libtool 一起使用

如何在不重新排序的情况下将 --whole-archive 与 libtool 一起使用?

背景: 我正在从依赖于依赖于 libdwarf 的 Dyninst 的源编译 Extrae(性能分析),后者在 Debian Wheezy 上作为静态库 (usr/lib/libdwarf.a) 提供。

Dyninst 是从以下来源编译的:

 # ./configure --with-libdwarf-static; make; make install
Run Code Online (Sandbox Code Playgroud)

创建:

/usr/lib/libdynDwarf.so.8.1
/usr/lib/libdyninstAPI.so.8
Run Code Online (Sandbox Code Playgroud)

然后从源代码编译 Extrae 。

# ./configure  --with-mpi=/usr --with-mpi-libs=/usr/lib --with-papi=/usr/local --with-unwind=/usr --with-dyninst=/usr --with-dwarf=/usr --with-dwarf-libs=/usr/lib
...
# make
...
/bin/sh ../../../libtool --tag=CXX   --mode=link g++ -I../../../src/common -I/usr/include  -g -O2 -Wall -W -L/usr/lib64 -ldyninstAPI -L/usr/lib64 -lunwind -lparseAPI -lsymtabAPI -linstructionAPI   -lcommon -L/usr/lib -ldwarf  -lelf -L/usr/lib -lxml2  -o extrae extrae-extrae.o extrae-forkSnippets.o extrae-cudaSnippets.o extrae-ompSnippets.o extrae-apiSnippets.o extrae-mpiSnippets.o extrae-commonSnippets.o extrae-applicationType.o …
Run Code Online (Sandbox Code Playgroud)

linker g++ static-libraries libtool

6
推荐指数
0
解决办法
838
查看次数

标签 统计

c ×1

debugging ×1

fortran ×1

g++ ×1

gdb ×1

libtool ×1

linker ×1

mpi ×1

static-libraries ×1