1: 对äºå¨åºç¨ç¨åºä¸å å
¥åæ°è¿è¡è°è¯çæ¹æ³ï¼
ç´æ¥ç¨ gdb app -p1 -p2 è¿æ ·è¿è¡è°è¯æ¯ä¸è¡çã
éè¦å以ä¸è¿æ ·ä½¿ç¨ï¼
#gdb app
(gdb) r -p1 -p2
æè
å¨è¿è¡runå½ä»¤å使ç¨set argså½ä»¤ï¼
ï¼gdbï¼ set args p1 p2
å¯ä»¥ç¨show args å½ä»¤æ¥æ¥ç
2. å å
¥æç¹ï¼
break <linenumber>
break <funcName>
break +offset
break -offset
(å¨å½åè¡å·çåé¢æåé¢çoffsetè¡åä½ã)
break filename:linenum
å¨æºæ件filenameçlinenumè¡å¤åä½ã
break filename:function
å¨æºæ件filenameçfunctionå½æ°çå
¥å£å¤åä½ã
break ... if
...å¯ä»¥æ¯ä¸è¿°çåæ°ï¼condition表示æ¡ä»¶ï¼å¨æ¡ä»¶æç«æ¶åä½ãæ¯å¦å¨å¾ªç¯å¢ä½ä¸ï¼å¯ä»¥è®¾ç½® break if i=100ï¼è¡¨ç¤ºå½i为100æ¶åä½ç¨åºã
3. æ¥çè¿è¡æ¶çå æ ï¼
使ç¨btå½ä»¤
4. æå°æ个åéçå¼ï¼
print val
5. åæ¥ï¼ n
继ç»è¿è¡ï¼ãc
ããstep
ããåæ¥è·è¸ªï¼å¦ææå½æ°è°ç¨ï¼ä»ä¼è¿å
¥è¯¥å½æ°ã
ããnext
ããåæ ·åæ¥è·è¸ªï¼å¦ææå½æ°è°ç¨ï¼ä»ä¸ä¼è¿å
¥è¯¥å½æ°ãå¾åVCçå·¥å
·ä¸çstep overãåé¢å¯ä»¥å countä¹å¯ä»¥ä¸å ï¼ä¸å 表示ä¸æ¡æ¡å°æ§è¡ï¼å 表示æ§è¡åé¢çcountæ¡æ令ï¼ç¶åååä½ã
ããset step-mode
ããset step-mode on
ããæå¼step-mode模å¼ï¼äºæ¯ï¼å¨è¿è¡åæ¥è·è¸ªæ¶ï¼ç¨åºä¸ä¼å 为没ædebugä¿¡æ¯èä¸åä½ãè¿ä¸ªåæ°æå¾å©äºæ¥çæºå¨ç ã
ããset step-mod off
ããå
³éstep-mode模å¼ã
ããfinish
ããè¿è¡ç¨åºï¼ç´å°å½åå½æ°å®æè¿åã并æå°å½æ°è¿åæ¶çå æ å°ååè¿åå¼ååæ°å¼çä¿¡æ¯ã
ããuntil æ u
ããå½ä½ åå¦äºå¨ä¸ä¸ªå¾ªç¯ä½å
åæ¥è·è¸ªæ¶ï¼è¿ä¸ªå½ä»¤å¯ä»¥è¿è¡ç¨åºç´å°éåºå¾ªç¯ä½ã
6.å¨GDBä¸æ§è¡shellå½ä»¤ï¼
ãå¨gdbç¯å¢ä¸ï¼ä½ å¯ä»¥æ§è¡UNIXçshellçå½ä»¤ï¼ä½¿ç¨gdbçshellå½ä»¤æ¥å®æï¼
ãeg. shell make
7. è¿è¡ç¯å¢
å¯è®¾å®ç¨åºçè¿è¡è·¯å¾ã
show paths æ¥çç¨åºçè¿è¡è·¯å¾ã
set environment varname [=value] 设置ç¯å¢åéãå¦ï¼set env USER=hchen
show environment [varname] æ¥çç¯å¢åéã
8.è§å¯ç¹ï¼WatchPointï¼
è§å¯ç¹ä¸è¬æ¥è§å¯æ个表达å¼ï¼åéä¹æ¯ä¸ç§è¡¨è¾¾å¼ï¼çå¼æ¯å¦æååäºï¼å¦ææååï¼é©¬ä¸åä½ç¨ åºãæ们æä¸é¢çå ç§æ¹æ³æ¥è®¾ç½®è§å¯ç¹ï¼
watch
为表达å¼ï¼åéï¼expr设置ä¸ä¸ªè§å¯ç¹ãä¸é表达å¼å¼æååæ¶ï¼é©¬ä¸åä½ç¨åºã
rwatch
å½è¡¨è¾¾å¼ï¼åéï¼expr被读æ¶ï¼åä½ç¨åºã
awatch
å½è¡¨è¾¾å¼ï¼åéï¼çå¼è¢«è¯»æ被åæ¶ï¼åä½ç¨åºã
info watchpoints
ååºå½åæ设置äºçææè§å¯ç¹ã
9. ç»´æ¤breakpoint
clear
æ¸
é¤ææçå·²å®ä¹çåæ¢ç¹ã
clear func
æ¸
é¤ææ设置å¨å½æ°ä¸çåæ¢ç¹ã
delete [breakpoints] [range...]
å é¤æå®çæç¹ï¼breakpoints为æç¹å·ãå¦æä¸æå®æç¹å·ï¼å表示å é¤ææçæç¹ãrange 表示æç¹å·çèå´ï¼å¦ï¼3-7ï¼ãå
¶ç®åå½ä»¤ä¸ºdã
æ¯å é¤æ´å¥½çä¸ç§æ¹æ³æ¯disableåæ¢ç¹ï¼disableäºçåæ¢ç¹ï¼GDBä¸ä¼å é¤ï¼å½ä½ è¿éè¦æ¶ï¼enableå³å¯ï¼å°±å¥½ååæ¶ç«ä¸æ ·ã
disable [breakpoints] [range...]
disableææå®çåæ¢ç¹ï¼breakpoints为åæ¢ç¹å·ãå¦æä»ä¹é½ä¸æå®ï¼è¡¨ç¤ºdisableææçåæ¢ ç¹ãç®åå½ä»¤æ¯dis.
enable [breakpoints] [range...]
enableææå®çåæ¢ç¹ï¼breakpoints为åæ¢ç¹å·ã
10ãç¨åºåé
æ¥çæ件ä¸æåéçå¼ï¼
file::variable
function::variable
å¯ä»¥éè¿è¿ç§å½¢å¼æå®ä½ ææ³æ¥ççåéï¼æ¯åªä¸ªæ件ä¸çææ¯åªä¸ªå½æ°ä¸çãä¾å¦ï¼æ¥çæ件f2.cä¸çå
¨å±åéxçå¼ï¼
gdb) p 'f2.c'::x
æ¥çæ°ç»çå¼
ææ¶åï¼ä½ éè¦æ¥çä¸æ®µè¿ç»çå
å空é´çå¼ãæ¯å¦æ°ç»çä¸æ®µï¼ææ¯å¨æåé
çæ°æ®ç大å°ãä½ å¯ä»¥ä½¿ç¨GDBçâ@âæä½ç¬¦ï¼â@âç左边æ¯ç¬¬ä¸ä¸ªå
åçå°åçå¼ï¼â@âçå³è¾¹åä½ ä½ æ³æ¥çå
åçé¿åº¦ãä¾å¦ï¼ä½ çç¨åºä¸æè¿æ ·çè¯å¥ï¼
int *array = (int *) malloc (len * sizeof (int));
äºæ¯ï¼å¨GDBè°è¯è¿ç¨ä¸ï¼ä½ å¯ä»¥ä»¥å¦ä¸å½ä»¤æ¾ç¤ºåºè¿ä¸ªå¨ææ°ç»çåå¼ï¼
p *array@len
å¦ææ¯éææ°ç»çè¯ï¼å¯ä»¥ç´æ¥ç¨printæ°ç»åï¼å°±å¯ä»¥æ¾ç¤ºæ°ç»ä¸æææ°æ®çå
容äºã
11.è¾åºæ ¼å¼
ä¸è¬æ¥è¯´ï¼GDBä¼æ ¹æ®åéçç±»åè¾åºåéçå¼ãä½ä½ ä¹å¯ä»¥èªå®ä¹GDBçè¾åºçæ ¼å¼ãä¾å¦ï¼ä½ æ³è¾åºä¸ä¸ªæ´æ°çåå
è¿å¶ï¼ææ¯äºè¿å¶æ¥æ¥çè¿ä¸ªæ´ååéçä¸çä½çæ
åµãè¦åå°è¿æ ·ï¼ä½ å¯ä»¥ä½¿ç¨GDBçæ°æ®æ¾ç¤ºæ ¼å¼ï¼
x æåå
è¿å¶æ ¼å¼æ¾ç¤ºåéã
d æåè¿å¶æ ¼å¼æ¾ç¤ºåéã
u æåå
è¿å¶æ ¼å¼æ¾ç¤ºæ 符å·æ´åã
o æå
«è¿å¶æ ¼å¼æ¾ç¤ºåéã
t æäºè¿å¶æ ¼å¼æ¾ç¤ºåéã
a æåå
è¿å¶æ ¼å¼æ¾ç¤ºåéã
c æåç¬¦æ ¼å¼æ¾ç¤ºåéã
f ææµ®ç¹æ°æ ¼å¼æ¾ç¤ºåéã
(gdb) p i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
(gdb) p/f i
$24 = 1.41531145e-43
(gdb) p/x i
$25 = 0x65
(gdb) p/t i
$26 = 1100101
11.æ¥çå
å
使ç¨examineå½ä»¤ï¼ç®åæ¯xï¼æ¥æ¥çå
åå°åä¸çå¼ãxå½ä»¤çè¯æ³å¦ä¸æ示ï¼
x/
nãfãuæ¯å¯éçåæ°ã
n æ¯ä¸ä¸ªæ£æ´æ°ï¼è¡¨ç¤ºæ¾ç¤ºå
åçé¿åº¦ï¼ä¹å°±æ¯è¯´ä»å½åå°åååæ¾ç¤ºå 个å°åçå
容ã
f 表示æ¾ç¤ºçæ ¼å¼ï¼åè§ä¸é¢ãå¦æå°åææçæ¯å符串ï¼é£ä¹æ ¼å¼å¯ä»¥æ¯sï¼å¦æå°åæ¯æ令å°åï¼é£ä¹æ ¼å¼å¯ä»¥æ¯iã
u 表示ä»å½åå°åå¾å请æ±çåèæ°ï¼å¦æä¸æå®çè¯ï¼GDBé»è®¤æ¯4个bytesãuåæ°å¯ä»¥ç¨ä¸é¢çå符æ¥ä»£æ¿ï¼b表示ååèï¼h表示ååèï¼w表示ååèï¼g表示å
«åèãå½æ们æå®äºåèé¿åº¦åï¼GDBä¼ä»æå
åå®çå
åå°åå¼å§ï¼è¯»åæå®åèï¼å¹¶æå
¶å½ä½ä¸ä¸ªå¼ååºæ¥ã
n/f/uä¸ä¸ªåæ°å¯ä»¥ä¸èµ·ä½¿ç¨ãä¾å¦ï¼
å½ä»¤ï¼x/3uh 0x54320 表示ï¼ä»å
åå°å0x54320读åå
容ï¼h表示以ååè为ä¸ä¸ªåä½ï¼3表示ä¸ä¸ªåä½ï¼u表示æåå
è¿å¶æ¾ç¤ºã
12.èªå¨æ¾ç¤º
ä½ å¯ä»¥è®¾ç½®ä¸äºèªå¨æ¾ç¤ºçåéï¼å½ç¨åºåä½æ¶ï¼ææ¯å¨ä½ åæ¥è·è¸ªæ¶ï¼è¿äºåéä¼èªå¨æ¾ç¤ºãç¸å
³çGDBå½ä»¤æ¯displayã
display
display/
display/ expr
expræ¯ä¸ä¸ªè¡¨è¾¾å¼ï¼fmt表示æ¾ç¤ºçæ ¼å¼ï¼addr表示å
åå°åï¼å½ä½ ç¨display设å®å¥½äºä¸ä¸ªæå¤ä¸ªè¡¨è¾¾å¼åï¼åªè¦ä½ çç¨åºè¢«åä¸æ¥ï¼GDBä¼èªå¨æ¾ç¤ºä½ æ设置çè¿äºè¡¨è¾¾å¼çå¼ã
æ ¼å¼iåsåæ ·è¢«displayæ¯æï¼ä¸ä¸ªé常æç¨çå½ä»¤æ¯ï¼
display/i $pc
undisplay
delete display
å é¤èªå¨æ¾ç¤ºï¼dnumsæ为æ设置好äºçèªå¨æ¾å¼çç¼å·ã
disable display
enable display
disableåenalbeä¸å é¤èªå¨æ¾ç¤ºç设置ï¼èåªæ¯è®©å
¶å¤±æåæ¢å¤ã
info display
æ¥çdisplay设置çèªå¨æ¾ç¤ºçä¿¡æ¯ãGDBä¼æåºä¸å¼ è¡¨æ ¼ï¼åä½ æ¥åå½ç¶è°è¯ä¸è®¾ç½®äºå¤å°ä¸ªèªå¨æ¾ç¤ºè®¾ç½®ï¼å
¶ä¸å
æ¬ï¼è®¾ç½®çç¼å·ï¼è¡¨è¾¾å¼ï¼æ¯å¦enableã
13. 设置æ¾ç¤ºé项
set print address
set print address on
æå¼å°åè¾åºï¼å½ç¨åºæ¾ç¤ºå½æ°ä¿¡æ¯æ¶ï¼GDBä¼æ¾åºå½æ°çåæ°å°åãç³»ç»é»è®¤ä¸ºæå¼çï¼
show print address
æ¥çå½åå°åæ¾ç¤ºé项æ¯å¦æå¼ã
set print array
set print array on
æå¼æ°ç»æ¾ç¤ºï¼æå¼åå½æ°ç»æ¾ç¤ºæ¶ï¼æ¯ä¸ªå
ç´ å ä¸è¡ï¼å¦æä¸æå¼çè¯ï¼æ¯ä¸ªå
ç´ å以éå·åéãè¿ä¸ªé项é»è®¤æ¯å
³éçãä¸ä¹ç¸å
³ç两个å½ä»¤å¦ä¸ï¼æå°±ä¸åå¤è¯´äºã
set print array off
show print array
set print elements
è¿ä¸ªé项主è¦æ¯è®¾ç½®æ°ç»çï¼å¦æä½ çæ°ç»å¤ªå¤§äºï¼é£ä¹å°±å¯ä»¥æå®ä¸ä¸ªæ¥æå®æ°æ®æ¾ç¤ºçæ大é¿åº¦ï¼å½å°è¾¾è¿ä¸ªé¿åº¦æ¶ï¼GDBå°±ä¸åå¾ä¸æ¾ç¤ºäºãå¦æ设置为0ï¼å表示ä¸éå¶ã
show print elements
æ¥çprint elementsçé项信æ¯ã
set print null-stop
å¦ææå¼äºè¿ä¸ªé项ï¼é£ä¹å½æ¾ç¤ºå符串æ¶ï¼éå°ç»æ符ååæ¢æ¾ç¤ºãè¿ä¸ªé项é»è®¤ä¸ºoffã
set print pretty on
å¦ææå¼printf prettyè¿ä¸ªé项ï¼é£ä¹å½GDBæ¾ç¤ºç»æä½æ¶ä¼æ¯è¾æ¼äº®ã
14.å
³äºæ¾ç¤ºæºç list
温馨提示:答案为网友推荐,仅供参考