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許可權管理及快速開發框架、最好用的許可權工作流系統。 基於經典領域驅動設計的許可權管理及快速開發框架,源於Martin Fowler企業級應用開發思想及最新技術組合(SqlSugar、EF、Quartz、AutoFac、WebAPI、Swagger、Mock、NUnit、Vue2/3、Ele ...
  • 前言 在實際項目開發中,需求變更和項目迭代是常態。要求我們能夠迅速響應,對資料庫結構進行相應的調整,如添加新表、更新現有表結構或增加欄位等。 為了確保團隊成員之間的信息同步,實時更新和維護資料庫文檔變得至關重要。這不僅提升了資料庫的可讀性,也極大提高了開發效率和團隊協作的流暢性。 SmartSQL, ...
  • ...
  • 在C#中,集合是用於存儲和操作一組數據項的數據結構。這些集合通常位於 System.Collections 和 System.Collections.Generic 命名空間中。下麵我將概述C#中幾種常用的集合類型及其特點: 1. System.Collections 命名空間中的集合 這個命名空間 ...
  • 前言 在項目開發中,方法返回的結果(成功或失敗)對我們開發來說很重要。傳統方法,如通過異常來指示錯誤或使用特定的返回類型(如布爾值加輸出參數),雖然有效,但可能缺乏直觀性和靈活性。 FluentResults庫應運而生,它以一種既流暢又富有表達力的方式,極大地優化了這一過程。通過使用FluentRe ...
  • 經過2個月的詳細調研,**稀土目前缺少生產車間之間數據協同交互、缺少完整的生產工序數據協同監測和分析,無法及時瞭解生產過程和經營情況,更無法進行有效的生產過程優化。本項目推動**稀土生產環節的數字化、信息化和智能化改造,從行業、戰略、技術和市場等方案全面提升**稀土的競爭力,打造**稀土焙燒、水浸、... ...
  • 最近遇到一個項目,由於客戶指定了印表機型號:HP LaserJet Pro M501n ,本來想著參考網上的代碼,使用System.Management來實現對印表機狀態的查詢,測試過程中發現無論是缺紙、空閑,獲取到的統統都是空閑狀態,咨詢售後也是說無法獲取狀態,也不提供SDK;後面在社區看見可以通 ...
  • 前言​ 推薦一個基於.NET 8 實現的通用許可權開發框架Admin.NET,前端使用Vue3/Element-plus開發。 基於.NET 8(Furion)/SqlSugar實現的通用管理平臺。整合最新技術,模塊插件式開發,前後端分離,開箱即用。 集成多租戶、緩存、數據校驗、鑒權、事件匯流排、動態A ...
  • 目錄Blazor 的關鍵概念項目模板Razor 語法依賴註入註入配置HeadOutlet 組件@code 分離Blazor 調試CSS 隔離調用JavaScript 最近在學習 Blazor ,在B站上找了一個國外的課程邊看邊學習。嗯,原價¥1503的課程,大概200多美元,課程鏈接如下: B站(大 ...
  • 在.Net中,資源回收主要是指記憶體管理和非托管資源的釋放。分別提供了兩種主要的方式進行處理: 垃圾回收(GC) 確認性資源釋放(DRD) 官網相關文檔的鏈接:https://learn.microsoft.com/zh-cn/dotnet/standard/managed-code 垃圾回收(Gar ...