gdb常用命令,

來源:互聯網
上載者:User

gdb常用命令,

find ./ -name "*.sql" | awk '{ cmd_str="\""$0"\""; print cmd_str}' | xargs grep -rn IFUSEDESTROUTE

dir /v8t/ngtf/server/trade_server:$cdir:$cwd
break commit_mq_thread.cpp:59 if (processing_idx==636645)

dir /tmp/src/data_pump:$cdir:$cwd
dir /home/yong.liu2/src/arch/offer2/offer/exch_market/offer_test/recv_czcemd:$cdir:$cwd
break zk_mgr.cpp:210
break zk_mgr.cpp:902

gdb -c core檔案 執行檔案 #查看core檔案

gdb -d /tmp/jinyuankehuwenti/src_v8t/product/v8t/trade_server:/tmp/jinyuankehuwenti/src_v8t/ngtf/server/trade_server trade_server
>dir /tmp/jinyuankehuwenti/src_v8t/product/v8t/trade_server:/tmp/jinyuankehuwenti/src_v8t/ngtf/server/trade_server:$cdir:$cwd #設定原始碼路徑
break process_thread.cpp:123 if ((info.serialno==660390))
>break public_business.cpp:8321 if (FldCancelReturnReq.entrust_no==1)
>display FldShMarginDisSyn.bs_margin_flag
>break public_business.cpp:5774 if ((cur_serial>=854398)&&(cur_serial<=85502))
break sync_hold_handle.cpp:5290 if ((strcmp(req.tx_no.buf, "02200667")==0)&&(strcmp(req.contract_code.buf,"ag1512")==0))

dir /tmp/offer:/tmp/offer/zk_2:$cdir:$cwd
break zk_mgr.cpp:1153

gdb -d /tmp/v8t_8316_test/src/product/v8t/trade_server trade_server

gdb -d {src路徑} 程式名|;|core檔案
>start #開始運行並在main中停止
>dir /tmp/v8t_8316_test/src/product/v8t/trade_server:/tmp/v8t_8316_test/src/ngtf/server/trade_server/:$cdir:$cwd #設定原始碼路徑
>list CAppServer::Run() #查看原始碼
>ctrl+x+a #顯示/隱藏圖形化
> break appserver.cpp:318 if ((serialno==101475)||(serialno==105431)) #條件斷點

break process_thread.cpp:123 if (nextSequence==25528)

break appserver.cpp:238
> break public_business.cpp:5933 if (FldDoneReturnReq.entrust_no==151940)
> break order_manage.cpp:2045 if (strcmp(FldFundReq.cust_no, "1001101771")==0)
break order_manage.cpp:12530
>break appserver.cpp:318 if ((serialno>=1023942)) #((serialno>=1048506))
break public_business.cpp:10088 if (strcmp(FldDoneReturnReq.exch_done_no, "00000594")==0)
(gdb) call close(1)
(gdb) call close(2)
(gdb) shell tty
/dev/pts/0
(gdb) call open("/dev/pts/0",2)
(gdb) call open("/dev/pts/0",2)

>dir /tmp/v8t_src/v8t_8311/product/v8t/trade_bu
>break entrust.cpp:78
> break module_func.cpp:1258
break trade_pub.cpp:14562
break P_cal_can_open_qty

1.命令:file 檔案名稱
功能:將指定的可執行檔載入到gdb中;

命令:-d {directory}
-directory={directory}
功能:指定源檔案和標頭檔所在的路徑

命令:set args 運行參數
show args
功能:設定或查看運行參數

命令:path [directory] #把目錄directory加入到搜尋可執行檔和符號檔案的路徑中
show paths #查看程式的運行路徑。
功能:設定或查看程式運行路徑

命令:-cd={directory}
功能:以指定目錄作為當前路徑來運行 gdb

命令:
set environment varname [=value] #設定環境變數。如:set env USER=hchen
show environment [varname] #查看環境變數。
功能:設定或查看環境變數

命令:cd

命令:
attach
detach
功能:掛接/取消掛接的進程

命令:info program #查看程式的是否在運行,進程號
info break [n] #查看斷點
info breakpoints [n]
info watchpoints #列出當前設定的所有觀察點
info locals #列印出當前函數中所有局部變數及其值
info catch #列印出當前的函數中的異常處理資訊
info [files/share] #列出當前的檔案,共用庫
功能:查看程式的是否在運行,進程號

命令:?????
功能:指定工作目錄、運行參數

命令:?????
功能:載入可執行檔或依賴的動態庫




命令: list
功能: 查看原始碼

命令:?????
功能:查看指定檔案、指定位置或函數的原始碼


命令: b/break [行號] #設定斷點
b/break [函數名] #設定斷點
b/break [+/-]offset
b/break file:func | file:nth
b/break *address
b/break line-number if condition
b/break line threadthread-number
tbreak #設定臨時的斷點。中斷一次後斷點會被刪除
命令: d/delete [breakpoint-number]#刪除所有斷點
d/delete [range]
clear func #清除函數func處的斷點
clear nth #清除第nth行處的斷點
disable [breakpoint-number | range] #
enable [breakpiont-number | range] #
enable once breakpint-number #設定指定斷點有效,當到達斷點時置為無效
enable del breakpiont-number #設定指定斷點有效,當到達斷點時刪除它

命令: condition <break_list斷點號列表> (condition條件)
功能: 如cond 4 i==3 在斷點4上增加中斷條件



命令:run
功能:運行

命令:start
功能:運行,單在main處停止;

命令: c
功能:繼續運行,直到結束或碰到斷點

命令:n/next
n/next number
功能:逐步執行

命令:step
s/step number-of-steps-to-perform #
功能:進入函數執行

命令:finish
功能:運行程式,直到當前函數完成返回。
並列印函數返回時的堆棧地址和傳回值及參數值等資訊

命令:u/until #當你厭倦了在一個迴圈體內單步跟蹤時,這個命令可以運行程式直到退出迴圈體
u/until line-number #繼續運行直到到達指定行號,或者函數,地址等。
u/until line-number ifcondition
功能: 當你厭倦了在一個迴圈體內單步跟蹤時,這個命令可以運行程式直到退出迴圈體

命令:bt/backtrace [n]
功能:列印當前的函數調用棧的所有資訊
n是一個正整數,表示只列印棧頂上n層的棧資訊


命令:
watch #為運算式(變數)expr設定一個觀察點。一量運算式值有變化時,馬上停住程式
rwatch #當運算式(變數)expr被讀時,停住程式
awatch #當運算式(變數)的值被讀或被寫時,停住程式。

命令:
display #程式停止時顯示變數和表達時
info display #顯示當前所有的要顯示值的運算式。
  delete display/undisplay [運算式編號] #刪除要顯示值的運算式
   disable display [運算式編號] #暫時不顯示一個要運算式的值
   enable display 運算式編號 #與disable display相反,使用運算式恢複顯示
whatis #顯示變數或函數類型
ptype #比whatis的功能更強,他可以提供一個結構的定義

二、遠端偵錯
1.服務端
gdbserver :2345 [options] trade_server -b
gdbserver [options] COMM PROG [ARGS...]
gdbserver [] --attach COMM PID
gdbserver [] --multi COMM

Options:
--debug
--remote-debug Enable remote protocol debugging output.
2.用戶端
gdb
> target remote ip:port

break public_business.cpp:14746 if (strcmp(cust_no, "82070418")==0)
break order_manage.cpp:2103 if(strcmp(req_vector[0].all_contract_code.getValue(),"SR1705-C-7000")==0)
break order_manage.cpp:753
break match_return.cpp:235
break public_business.cpp:6715

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.