find ./ -name "*.sql" | awk '{ cmd_str="\""$0"\""; print cmd_str}' | xargs grep -rn IFUSEDESTROUTE dir /v8t/ngtf/server/trade_server:$cdir:$cwdbreak c ...
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