'gdb'에 해당되는 글 1건

  • 2011.01.05 GDB 4

GDB

development 2011. 1. 5. 16:05
- 메모리 주소로 braek point 거는법
break 명령으로는 address 에 대해 break 를 걸 수 없다. 

이럴 때는 watch 명령을 사용해야 하는데, watch 명령은 아래와 같이 세가지가 있다. 

  Write 상황시 : watch
  Read 상황시 : rwatch
  R/W  상황시 : awatch

(gdb) c
Continuing.
KmsgSourcePlugin::Initialize
[New Thread 0x7ffff5f6d700 (LWP 21295)]
KmsgSourcePlugin::Start
[Thread 0x7ffff5f6d700 (LWP 21295) exited]
[Inferior 1 (process 21292) exited normally]
(gdb) awatch *0x7ffff5f6d700
Hardware access (read/write) watchpoint 2: *0x7ffff5f6d700
(gdb) r
Starting program: /home/poplinux/work/ngsf/p2logd/work/output/bin/p2logd -c ./klog.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, main (argc=3, argv=0x7fffffffeb38) at main.cc:64
64 int main(int argc, char **argv) {
(gdb) c
Continuing.
KmsgSourcePlugin::Initialize
Hardware access (read/write) watchpoint 2: *0x7ffff5f6d700

Value = -168372480
0x00007ffff786a476 in pthread_create@@GLIBC_2.2.5 () from /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) 

참조 링크


- 공유 라이브러리 디버깅
step 1. 공유 라이브러리를 디버깅 심벌을 넣어서 컴파일한다.

step 2. gdb 를 실행하여 아래와 같이 환경 설정을 한다.
   (gdb) set solib-search-path ./lib
   (gdb) set solib-absolute-prefix ../lib

    Reading symbols from /home/poplinux/work/vlc/vlc-1.0.2/output/lib/libvlc.so.2...done.
    Loaded symbols for /home/poplinux/work/vlc/vlc-1.0.2/output/lib/libvlc.so.2
    Reading symbols from /lib/tls/i686/cmov/libc.so.6...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/libc.so.6
    Reading symbols from /lib/tls/i686/cmov/libpthread.so.0...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/libpthread.so.0
    Reading symbols from /home/poplinux/work/vlc/vlc-1.0.2/output/lib/libvlccore.so.2...done.
    Loaded symbols for /home/poplinux/work/vlc/vlc-1.0.2/output/lib/libvlccore.so.2
    Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
    Loaded symbols for /lib/ld-linux.so.2
    Reading symbols from /lib/libdbus-1.so.3...(no debugging symbols found)...done.
    Loaded symbols for /lib/libdbus-1.so.3
    Reading symbols from /lib/tls/i686/cmov/librt.so.1...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/librt.so.1
    Reading symbols from /lib/tls/i686/cmov/libdl.so.2...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
    Reading symbols from /lib/tls/i686/cmov/libm.so.6...(no debugging symbols found)...done.
    Loaded symbols for /lib/tls/i686/cmov/libm.so.6
    Reading symbols from /usr/lib/gconv/EUC-KR.so...(no debugging symbols found)...done.
    Loaded symbols for /usr/lib/gconv/EUC-KR.so
    Reading symbols from /usr/lib/gconv/libKSC.so...(no debugging symbols found)...done.
    Loaded symbols for /usr/lib/gconv/libKSC.so

step 3. 디버깅을 한다.

step 4. 퇴근한다.


'development' 카테고리의 다른 글

[linux kernel]Scatter list  (1) 2011.09.27
[HW] TTL 과 RS232 에 대한 정리  (0) 2011.09.26
[HW] TTL Level 과 CMOS Level  (0) 2011.09.26
[crypto] IPSec  (0) 2011.09.23
GCC on-line  (0) 2011.09.22
블로그 이미지

김유석0

,