2012-07-25 4 views
18

C 및 Fortran 소스를 모두 결합한 MPI 응용 프로그램이 있습니다. 때로는 메모리 관련 버그로 인해 충돌이 발생하지만 버그를 찾는 데 문제가 있습니다 (다른 사람의 코드에있는 어딘가에 있으며 익숙하지 않습니다). 아직 gdb로 잡을 수는 없지만, 때로는 glibc 백 트레이스가 아래와 같이 출력됩니다.libc 백 트레이스를 소스 행 번호로 변환

버그가 "(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 0000c000 08:03 407798  /usr/lib/openmpi/lib/openmpi/mca_osc_rdma.so 
<snip> 

gdb에 있고 당신이 디버깅 심볼이있는 경우, 그것은 아주 쉽게

답변

22

... 감사합니다. list을 사용하십시오.

(gdb) list *0x804d5ce 

이렇게하면 코드 줄을 제공하고 원본 파일을 찾을 수 있으면 원본을 표시해야합니다.

gdb없이 당신은 addr2line를 사용을 시도 할 수 있습니다 :

$ addr2line -e finite_element 0x804d5ce 
+0

예, 그것을 행한. 고맙습니다. "0x804d5ce이 main_main에 (mpi_Main_trian_kernel.f : 374)은" 라인 (374)은 다음과 같습니다 할당 해제 (페이스) 는 그래서이 게재되어 그 단지 버그 아니다. 그것을 추적하기위한 제안? – davepc

+0

@davepc : 귀하의 버그는 힙 손상 일 가능성이 큽니다. 당신은 그것을 확인하기 위해'valgrind'를 사용해 볼 수 있습니다. – jxh

관련 문제