gdb常用命令

来源:http://www.cnblogs.com/tewuapple/archive/2017/11/04/7782333.html
-Advertisement-
Play Games

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://kingxss.iteye.com/blog/1741076 ...
  • 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4、mongo 3.4分片集群系列之 ...
  • 在處理實時數據的過程中需要緩存的參與,由於在更新實時數據時併發處理的特點,因此在更新實時數據時經常產生新老數據相互覆蓋的情況,針對這個情況調查了Redis事務和Lua腳本後,發現Redis事務並不能很好的滿足該場景的業務需要,必須藉助Lua腳本執行原子化的操作才能在理論上解決數據更新的準確性問題。 ...
  • 準備工作 Visual Studio 2015,其他版本未驗證,估計問題不大 ActiveState ActivePerl,用於編譯OpenSSL Mingw,在官網下載minimum installer安裝即可 nasm,彙編代碼運行環境,官網下載安裝即可 ActiveState ActiveTc ...
  • 在select...from...中嵌套select...from... ...
  • phpStudy Linux版&Win版同步上線 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd,支持php5.2/5.3/5.4/5.5切換 已經在centos- ...
  • 一、開始安裝 1)新建虛擬機 RHEL7.2 2)成功引導系統--開機出現此畫面 Install Red Hat EnterpriseLinux 7.2 安裝RHLE7.2 操作系統 Test this edia & install RedHat Enterprise Linux 7.2 測試安裝文 ...
  • 一、通過yum安裝vsftpd yum install -y vsftpd 二、修改vsftpd的配置文件 vi /etc/vsftpd/vsftpd.conf 修改配置文件如下:1.不允許匿名訪問 anonymous_enable=NO 2.允許使用本地帳戶進行FTP用戶登錄驗證 local_en ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...