(1) gdb的调试方式
(1-1 代码显示命令 <li>
..
(gdb) li
122 STLocalDataArea stSTLocalDataArea;
#
124 /* システム共通変数エリア変数 */
125 STSysVarArea stSTSysVarArea;
#
127 /* フォーマット変換機能に利用した全部のエリア変数 */
128 STNHA000JParam stSTNHA000JParam;
#
130 /* 初期化 */
131 iErrFlg = 0;
(gdb)
(1-2 断点处理命令 <b>, <d>
(gdb) b NHA400J
Breakpoint 1 at 0x400000000000b1d4: file NHA400J.c, line 154 from /ngn/ap/hen/bin/./NHA000J.
(gdb) b 200
Breakpoint 2 at 0x4000000000005138: file NHA000J.c, line 200 from /ngn/ap/hen/bin/./NHA000J.
(gdb) i b
Num Type Disp Enb Address What
1 breakpoint keep y 0x400000000000b1d4 in NHA400J at NHA400J.c:154
2 breakpoint keep y 0x4000000000005138 in main at NHA000J.c:200
(gdb) d 2
(1-3 执行处理命令 <r>, <c>, <s>,<n>
-- r命令从头运行程序(run),等同于vc++中的(F5)
-- 如果没有加断点,将一直执行到完成。
(gdb) r
Starting program: /ngn/ap/hen/bin/./NHA000J
Breakpoint 2, NHA400J (pStParaData=0x800003ffff7f48f8,
pCDRRecord=0x800003ffff7f4a18 "01 01,0491,112233,1,1,1,"...) at NHA400J.c:154
154 iRet = 0;
-- n命令指单步执行(step over),等同于vc++中的(F10)
(gdb) n
155 iIndex = 0;
-- c命令指继续执行(continue),等同于在断点停下后,继续往下执行,vc++中的(F5)
gdb) c
Continuing.
Breakpoint 4, NHA400J (pStParaData=0x800003ffff7f48f8,
pCDRRecord=0x800003ffff7f4a18 "01 01,0490,112233,1,1,"...) at NHA400J.c:889
889 if ( NHA_ERR_NONE == iSDPErrFlg )
(gdb) n
893 iRet = NHAB00J( acSdpAnswer, acSdpOffer, pStParaData, &stSdpOut );
-- s命令指单步执行(step in),跟入调用的函数,等同于vc++中的(F11)
(gdb) s
NHAB00J ( pcSDPAnswer=0x800003ffff7f5cf8 "v=0//r//,",
pcSDPOffer=0x800003ffff7f60e8 "v=0//r//) at NHAB00J.c:67
67 iRet = 0;
(1-4 watch命令 <p>
-- p命令可以显示变量值,或者修改变量的值。
(gdb) p stSDPOffer.iMediaFieldCnt
$2 = 1
(gdb) p iCnt = 5
$3 = 5
(2)图形化的调试工具(wdb),除了装载文件之外,其他调试方式和vc++中完全一样。