section | option | description | remark |
---|---|---|---|
Select Files | <file> --exec=<file> | 実行形式ファイルとして <file> を指定 | |
-c <file> --core=<file> | core ファイルとして <file> を指定 | ||
--se=<file> | シンボルファイル及び実行形式ファイルとして <file> を指定 | ||
--symbols=<file> | シンボルフィルとして <file> を指定 | ||
Output and user interface control | --tui | Terminal が User Interface であるものとして扱う。 | ターミナルの画面を上下2分割し、上半分にソースコード、下半分に通常の gdb の入出力画面が表示される |
-w | GUI を使用する | ||
Operating modes | --configuration | gdb の設定内容の詳細を表示して終了する | |
other | --cd=<dir> | Currente Directory を <dir> にする | |
remote debugging options | -b <BAUDRATE> | serial port の baud rate を指定 | |
-l <TIMEOUT> | リモードでバッグにおけるタイムアウトを <TIMEOUT>[sec] に設定する | ||
batch | -batch | バッチ処理モードで起動。 | |
batch | -x <command-file> | バッチ処理モードで実行する gdb のコマンドファイルを指定する。 |
$ ./TestProg CATest::SetEventQueue: [event_queue:0x7ffdf43294e0] Push: [queue_num:01][EVENT_ID:RUN] Pop(2): [queue_num:00][EVENT_ID:01:RUN] Push: [queue_num:01][EVENT_ID:INVALID] Pop(2): [queue_num:00][EVENT_ID:04:INVALID] Trace/breakpoint trap (コアダンプ)
$ gdb (gdb)
(gdb) file ./TestProg Reading symbols from TestProg...(no debugging symbols found)...done.
(gdb) core-file core [New LWP 15174] [New LWP 15173] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `./TestProg'. Program terminated with signal SIGTRAP, Trace/breakpoint trap. #0 0x00007f8f523dc79b in raise (sig=5) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:37 37 ../nptl/sysdeps/unix/sysv/linux/pt-raise.c: そのようなファイルやディレクトリはありません. (gdb)
(gdb) bt #0 0x00007f8f523dc79b in raise (sig=5) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:37 #1 0x0000000000404c47 in SigsegvWorkerThread ( p_args=<error reading variable: can't compute CFA for this frame>) at SigsegvWorkerThread.cpp:63 #2 0x0000000000404abc in std::_Bind_simple<void (*(CSigsegvWorkerThreadArgs*))(CSigsegvWorkerThreadArgs*)>::_M_invoke<0ul>(std::_Index_tuple<0ul>) ( this=<error reading variable: can't compute CFA for this frame>) at /usr/include/c++/4.9/functional:1700 #3 0x00000000004049b5 in std::_Bind_simple<void (*(CSigsegvWorkerThreadArgs*))(CSigsegvWorkerThreadArgs*)>::operator()() (this=<error reading variable: can't compute CFA for this frame>) at /usr/include/c++/4.9/functional:1688 #4 0x0000000000404932 in std::thread::_Impl<std::_Bind_simple<void (*(CSigsegvWorkerThreadArgs*))(CSigsegvWorkerThreadArgs*)> >::_M_run() ( this=<error reading variable: can't compute CFA for this frame>) at /usr/include/c++/4.9/thread:115 #5 0x00007f8f526a0970 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #6 0x00007f8f523d50a4 in start_thread (arg=0x7f8f51b0a700) at pthread_create.c:309 #7 0x00007f8f51bf387d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 (gdb)
(gdb) file ./TestProg Reading symbols from TestProg...(no debugging symbols found)...done. (gdb)
(gdb) symbol-file TestProg.sym Load new symbol table from "TestProg.sym"? (y or n) y Reading symbols from TestProg.sym...done. (gdb)
ファイル名:行番号 シンボル名(関数名) アドレス
bt [file:]function bt [file:]line
(gdb) printf "[id:%d][address: %p]\n", i, address_array[i]
(gdb) l <start-line-no>,<end-line-no>
$ kill -6 <PID>
$ vi command.gdb info thread thread 2 info locals
$ gdb ${PROGRAM_FILE} -c core -batch -x <command-file>