GDBの使用方法

FUJISEKKを作る。 FUJISEKK_Messaeg。

コンパイル例
[root@localhost oomagari]# arm-linux-gcc -g test.c -o test
test.c: In function `main':
test.c:2: warning: return type of 'main' is not `int'

ターゲットボ−ドで
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/

//#gdbserver <ipaddress of HOST system>:7000 <name of program to be debugged>
#gdbserver 192.168.1.1:7000 test
#gdbserver 192.168.1.2:7000 hub-ctrlb  2=serverID

/tmp/mnt/hdd/bin/gdbserver

ホスト

x86-linux-elf/bin/gdb
にある

ファイル gdbinit の内容
********************************************************
handle SIG32 nostop
handle SIG32 noprint
target remote 192.168.1.2:7000
target remote 192.168.1.11:7000 11=targetID
set solib-search-path /usr/local/arm-linux/arm-linux/lib
set solib-absolute-prefix /dev/null
********************************************************

実行例

gdb --command=gdbinit test
gdb  test
/NewOLO0920/OloRiverPDK-EngineeringRelease3.1.22/host/x86-linux-elf/bin/gdb

gdb test ”test”をデバック
   main にブレークポイントを付ける
(gdb) b main
  16行目にブレークポイントを付ける
(gdb) b 16


(gdb) continu
Breakpoint 1, main () at test.c:4
4               printf("Hloo Wold");

target Hloo WoldGDB  Test  0: Exit
target INPUT=99

(gdb) continu
Continuing.

target 1 入力

Breakpoint 2, main () at test.c:16
16              if (idat==0) break;
(gdb) print idat
$1 = 1

(gdb) continu
Continuing.

target GDB  Test  0: Exit

実行中エラーでとまった例
 JPEGのデコードをしている
Program received signal SIGSEGV, Segmentation fault.
0x00401e68 in HuffmanDecode (
    buff=0x4d0020 "\377リ\377", <incomplete sequence \340>, table=1 '\001',
    BlockData=0x22eebc) at djpeg.c:420
420             BlockData[zigzag_table[count]] = DataCode * TableDQT[tabledqt][count];

      }else{
    count += ZeroCount;
    // 逆量子化+ジグザグ
420    BlockData[zigzag_table[count]] = DataCode * TableDQT[tabledqt][count];
    count ++;
      }
(gdb) print TableDQT
$2 = {'\001' <repeats 64 times>, '\001' <repeats 64 times>,

同様にcount,ZeroCountもprintすると
count=74
ZeroCount=11 0xb

 count += ZeroCount;実行前はcount=63(74-11)だった、zigzag_tableは64しか確保していないのでZeroがいくつでも64以 上にしてはいけない。