1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          關于gdb

          來源:互聯網轉載 時間:2023-09-04 03:50:59

          GDB全稱GDB Debugger。GDB具備各種調試功能,使用GDB的調試人員可以查看及修改程序的內部變量值。

          1. 綁定進程

          gdb <bin> # GDB運行一個二進制,用于調試使用gdb attach <pid> # 綁定正在運行的進程,原則上禁止直接attach線上進程

          2. 查看代碼

          2.1 查看程序代碼

          dir <source_directory> # 添加cpp原文件目錄l # 默認顯示暫停處代碼,一直執行l會向下滾動顯示l <function> # 顯示函數代碼l <file:function> # 顯示文件中某函數代碼l <file:line> # 顯示文件中指定行數代碼

          2.2 查看匯編指令

          disass # 顯示當前匯編指令

          3. 斷點

          3.1 斷點設置

          > b <file:line> # 設置文件中某行斷點> b <file:function> # 設置文件中某函數斷點> b <namespace::class::function> # 設置某類的成員函數斷點> b <location> <thread-id> # 設置某個線程在某處的斷點> b <location> if <condition> # 設置某處的條件斷點

          3.2 斷點查看

          info b # 查詢所有斷點

          3.3 斷點刪除/啟用/禁用

          > d <break-id> # 刪除某斷點> disable <break-id> # 禁用某斷點> enable <break-id> # 啟用某斷點

          3.4 斷點設置自動執行命令

          command <break-id>p <var> # 運行到斷點處時自動打印變量<var>end

          4. 打印變量

          4.1 打印普通變量

          print

          > p <expr> # 打印變量<var> > p <var>=<value> # GDB過程中更改某個變量的值

          display

          display和print區別在于,display會一直打印某個值

          > display <expr> # 打印某個變量或表達式,expr 表示要查看的目標變量或表達式> display/fmt <expr> # 參數 fmt用于指定輸出變量或表達式的格式

          /fmt

          功 能

          /x

          以十六進制的形式打印出整數。

          /d

          以有符號、十進制的形式打印出整數。

          /u

          以無符號、十進制的形式打印出整數。

          /o

          以八進制的形式打印出整數。

          /t

          以二進制的形式打印出整數。

          /f

          以浮點數的形式打印變量或表達式的值。

          /c

          以字符形式打印變量或表達式的值。

          4.2 打印protobuf message

          > p <var>.DebugString() # 使用DebugString()將proto對象內部結構打印出來

          4.3 打印內存地址

          # n:為正整數,表示需要打印的內存單元個數## f:打印格式, 如下# - x: 十六進制# - d: 十進制# - u: 十六進制# - o: 八進制# - t: 二進制# - a: 十六進制# - c: 字符格式# - f: 浮點數## u: 內存單元大小,如下:# - b: 單字節# - h: 雙字節# - w: 四字節# - g: 八字節#> x/<n/f/u> <addr> # addr: 要打印的內存地址

          4.4 dump內存內容至文件

          # 將start_addr至end_addr的內存內容以二進制形式dump到file文件,file文件名自定義即可> dump binary memory <file> <start_addr> <end_addr>

          4.5 打印長字符串

          gdb會限制打印字符串的最大長度。使用下列命令可修改限制。

          > show print elements # 顯示字符串最大打印長度> set print elements 0 # 取消字符串最大打印長度

          4.6 打印CPU寄存器的值

          > i r # 打印所有寄存器的值> i r es # 打印寄存器es的值

          5. 線程調試

          pstack <pid> # 可事先dump某個進程下所有線程的thread id和backtrace,方便gdb調試info threads # 查看當前所有線程信息bt # 查看當前線程的backtracebt full # 查看當前線程更詳細的backtrace(每個棧幀上的參數)thread <thread-id> # 切換到某一個線程set scheduler-locking on # 多線程環境下,只有當前被調試線程會執行set scheduler-locking off # 多線程環境下,除當前被調試線程之外的其他線程也在同步執行set scheduler-locking step # 多線程環境下,對當前被調試線程用step調試時,其他線程不會執行;使用next調試時,其他線程也許會執行

          6. 運行控制

          r arg1 arg2 ... # 重新開始運行二進制,如果需要傳入參數內需要arg1 arg2...stop # 暫停運行c # 繼續執行(continue)n # 單步執行(next),遇到函數則跳過s # 單步執行(step),遇到函數則跳入函數體finish # 運行直到跳出當前函數until line # 運行直到到達指定行call command # 運行C++命令shell # 進入shell模式,回到linux終端exit # 退出shell模式,回到gdb命令行set $var=XXX # 設置gdb變量set var=XXX # 設置程序中變量

          7. 結束調試

          # gdb二進制時,使用q/quit退出qquit# gdb attach進程時,使用detach退出detach

          8. 調試core

          一般情況下,當設置了ulimit -c unlimited之后,當程序遇到異常時,會自動轉儲core文件(即crash時會dump core文件),方便開發者查看分析現場。

          但是,如果想對一個正常運行的進程進行轉儲, 可使用gcore命令:

          gcore <pid> # 將進程<pid>轉儲到core文件中

          調試core文件

          # 調試core文件,兩個gdb命令都可gdb bin coregdb -c core binbt full # 查看異常的backtrace

          9. 代碼窗口

          gdb命令行中輸入CTRL + X或者CTRL + A,即可調出代碼窗口,再按一次退出代碼窗口。

          注意: 在tui模式下,無法使用方向鍵獲取上一條或下一條命令,可使用ctrl+p和ctrl+n替代

          10. 開啟日志

          gdb默認不開啟日志??墒褂萌缦旅铋_啟

          set logging on # 設置gdb日志開啟,gdb會在當前目錄下生成gdb.txt記錄gdb命令行所有輸出結果,方便回溯歷史。

          11.一些小問題

          breakpoint斷點定位到指定代碼庫的指定文件的指定行(以coredump中的地址為準)

          b lalalal/func/output/include/infer.h:1915

          gdb斷點不停

          可以先嘗試更換一下編譯級別:-O2更正成-O0

          但是需要記住,這里需要重新編譯,不要直接用!

          關于core文件的使用

          首先 sudo ./setup.bash -u ./core.aa (其中參數 -u,添加路徑)

          接著運行:sudo gdb ./bin/llala(可執行文件) core.aa(core文件)

          進入gdb之后,就可以跟蹤查看bt

          gdb查core

          ll /home/coredumps

          /opt/compiler/gcc-8.2/bin/gdb ./bin/[bin文件] /home/coredumps/[core文件]

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          首創輪胎的優點和缺點?首創輪胎,北京首創輪胎旗艦品牌。綜合經濟實力在輪胎行業排名第15位,半鋼子午線輪胎前5名。產品注冊商標為BCT、經綸、盾、奧特佳等。在輪胎行業可以算是(半鋼子午線輪胎)平均水平。優點:環保,剎車距離短,穩定性好。缺點:噪音大,帶水路面操控差。bct輪胎官網?BCT是北京第一輪胎,全稱是北京車輪??梢哉f經綸輪胎是低端輪胎中的佼佼者,尤其是這款輪胎質量非常好。北京輪輪胎以高強度橡...

          中國移動CMCC無線WIFI免費使用步驟?CMCC無線WIFI免費使用步驟1.打開手機,點擊【設置】選項,然后點擊【無線局域網】選項進入無線局域網頁面。選擇【CMCC-FR怎樣使用移動cmcc的wifi熱點? s CMCC無線局域網每個月可以免費使用10個小時,網速很快。如果能找到信號,可以嘗試連接。具體連接方法如下:1.首先搜索出信號【CMCC-FR如何連接CMCC的WiFi?1.確定你已經在營...

          北京移動新暢享套餐?功能費25元/月,包含本地移動數據流量300M,超出部分0.29元/m..1.享受4G功能的卡,是USIM卡。號碼激活后,將顯示 "運動區25元套餐并且會默認開啟4G功能,激活號碼當月套餐立即生效。月租費和可用的軟件包資源每天都在計算,其他的沒有提到費用,規則等。在移動區域。2.軟件包中包含的免費資源僅對當月有效,對下月無效。3.卡內50元話費不能退款,不能轉賬,不能用于第三方...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>