久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

GDB命令

 千杯不醉004 2011-03-21
在linux的c編程中大家經(jīng)常用gdb調(diào)試程式,以下是一些常用的指令

  1.break FUNCTION

  在某個函數(shù)上設(shè)置斷點,。函數(shù)重載時,,有可能同時在幾個重載的函數(shù)上設(shè)置了斷點

  break +OFFSET

  break -OFFSET

  在當(dāng)前程式運行到的前幾行或后幾行設(shè)置斷點

  break LINENUM

  在行號為LINENUM的行上設(shè)置斷點

  break FILENAME:LINENUM

  在文件名為FILENAME的原文件的第LINENUM行設(shè)置斷點

  break FILENAME:FUNCTION

  在文件名為FILENAME的FUNCTION函數(shù)上設(shè)置斷點

  當(dāng)你的多個文件中可能含有相同的函數(shù)名時必須給出文件名。

  break *ADDRESS

  在地址ADDRESS上設(shè)置斷點,,這個命令允許你在沒有調(diào)試信息的程式中設(shè)置斷點

  break

  當(dāng)break命令不包含所有參數(shù)時,,break命令在當(dāng)前執(zhí)行到的程式運行棧中的

  下一條指令上設(shè)置一個斷點。除了棧底以外,,這個命令使程式在一旦從當(dāng)前

  函數(shù)返回時停止。相似的命令是finish,,但finish并不設(shè)置斷點,。這一點在

  循環(huán)語句中非常有用。gdb在恢復(fù)執(zhí)行時,,至少執(zhí)行一條指令,。

  break ... if COND

  這個命令設(shè)置一個條件斷點,條件由COND指定,;在gdb每次執(zhí)行到此斷點時

  COND都被計算當(dāng)COND的值為非零時,,程式在斷點處停止

  ignore BNUM COUNT’

  設(shè)置第BNUM號斷點的被忽略的次數(shù)為’COUNT’,即斷點BNUM再執(zhí)行到第COUNT+1

  次時程式停止

  tbreak ARGS 或簡寫為 tb

  設(shè)置斷點為只有效一次,。ARGS的使用同break中的參量的使用

  hbreak ARGS

  設(shè)置一個由硬件支持的斷點,。這個命令的主要目的是用于對EPROM/ROM程式的調(diào)試

  因為這條命令能在不改動代碼的情況下設(shè)置斷點。這能同SPARCLite DSU一起

  使用,。當(dāng)程式訪問某些變量和代碼時,,DSU將設(shè)置“陷井”。注意:你只能一次使用

  一個斷點,,在新設(shè)置斷點時,,先刪除原斷點

  thbreak ARGS’

  設(shè)置只有一次作用的硬件支持?jǐn)帱c

  rbreak REGEX

  在所有滿足表達(dá)式REGEX的函數(shù)上設(shè)置斷點。這個命令在所有相匹配的函數(shù)上設(shè)置無

  條件斷點,當(dāng)這個命令完成時顯示所有被設(shè)置的斷點信息,。這個命令設(shè)置的斷點和

  break命令設(shè)置的沒有什么不同,。當(dāng)調(diào)試C++程式時這個命令在重載函數(shù)上設(shè)置斷點時

  非常有用。

  info breakpoints [N]

  info break [N]

  info watchpoints [N]

  顯示所有的斷點和觀察點的設(shè)置表,,有下列一些列

  *Breakpoint Numbers*----斷點號

  *Type*----斷點類型(斷點或是觀察點)

  *Disposition*---顯示斷點的狀態(tài)

  *Enabled or Disabled*---使能或不使能,。’y’表示使能,’n’表示不使能,。

  *Address*----地址,,斷點在你程式中的地址(內(nèi)存地址)

  *What*---地址,斷點在你程式中的行號,。

  如果斷點是條件斷點,,此命令還顯示斷點所需要的條件。

  帶參數(shù)N的’info break’命令只顯示由N指定的斷點的信息,。

  此命令還顯示斷點的運行信息(被執(zhí)行過幾次),,這個功能在使用’ignore’

  命令時非常有用。你能’ignore’一個斷點許多次,。使用這個命令能查看斷點

  被執(zhí)行了多少次,。這樣能更快的找到錯誤。

  maint info breakpoints

  顯示所有的斷點,,無論是你設(shè)置的還是gdb自動設(shè)置的,。

  斷點的含義:

  breakpoint:斷點,普通斷點

  watchpoint:普通觀察點

  longjmp:內(nèi)部斷點,,用于處理’longjmp’調(diào)用

  longjmp resume:內(nèi)部斷點,,設(shè)置在’longjmp’調(diào)用的目標(biāo)上

  until:’until’命令所使用的內(nèi)部斷點

  finish:finish’命令所使用的內(nèi)部斷點

  2.watch EXPR

  為表達(dá)式(變量)expr設(shè)置一個觀察點。一量表達(dá)式值有變化時,,馬上停住程式,。

  這個命令使用EXPR作為表達(dá)式設(shè)置一個觀察點。GDB將把表達(dá)式加入到程式中并監(jiān)

  視程式的運行,,當(dāng)表達(dá)式的值被改動時GDB就使程式停止,。這個也能被用在SPARClite

  DSU提供的新的自陷工具中。當(dāng)程式存取某個地址或某條指令時(這個地址在調(diào)試寄

  存器中指定),DSU將產(chǎn)生自陷,。對于數(shù)據(jù)地址DSU支持’watch’命令,然而硬件斷點寄

  存器只能存儲兩個斷點地址,,而且斷點的類型必須相同。就是兩個’rwatch’型斷點

  或是兩個’awatch’型斷點,。

  rwatch EXPR’

  設(shè)置一個觀察點,,當(dāng)EXPR被程式讀時,程式被暫停,。

  awatch EXPR’

  設(shè)置一個觀察點,當(dāng)EXPR被讀出然后被寫入時程式被暫停,。

  info watchpoints

  在多線程的程式中,觀察點的作用非常有限,GDB只能觀察在一個線程中的表達(dá)式的值

  如果你確信表達(dá)式只被當(dāng)前線程所存取,,那么使用觀察點才有效,。GDB不能注意一個

  非當(dāng)前線程對表達(dá)式值的改動。

  rwatch <expr>

  當(dāng)表達(dá)式(變量)expr被讀時,,停住程式,。

  awatch <expr>

  當(dāng)表達(dá)式(變量)的值被讀或被寫時,停住程式,。

  info watchpoints

  列出當(dāng)前所設(shè)置了的所有觀察點,。

  3.catch EXCEPTIONS

  使用這個命令在一個被激活的異常處理句柄中設(shè)置斷點。EXCEPTIONS是個你要抓住

  的異常,。你相同能使用’info catch’命令來列出活躍的異常處理句柄,。

  GDB中對于異常處理由以下情況不能處理:

  * 如果你使用一個交互的函數(shù),當(dāng)函數(shù)運行結(jié)束時,,GDB將象普通情況相同把控制返

  回給你,。如果在調(diào)用中發(fā)生了異常,這個函數(shù)將繼續(xù)運行直到遇見一個斷點,,一個信號

  或是退出運行,。

  * 你不能手工產(chǎn)生一個異常( 即異常只能由程式運行中產(chǎn)生 )

  * 你不能手工設(shè)置一個異常處理句柄。

  有時’catch’命令不一定是調(diào)試異常處理的最佳的方法,。如果你需要知道異常產(chǎn)生的

  確切位置,,最佳在異常處理句柄被調(diào)用以前設(shè)置一個斷點,這樣你能檢查棧的內(nèi)容,。

  如果你在一個異常處理句柄上設(shè)置斷點,,那么你就不容易知道異常發(fā)生的位置和原因。

  要僅僅只在異常處理句柄被喚醒之前設(shè)置斷點,,你必須了解一些語言的實現(xiàn)細(xì)節(jié)。

  3.cont N

  第N次經(jīng)過該斷點時才停止程式運行

  4.enable 斷點編號

  恢復(fù)暫時失活的斷點,,要恢復(fù)多個編號的斷點,,可用空格將編號分開

  5.disable 斷點編號

  使斷點失效,不過斷點還在

  6.delete 斷點編號或表達(dá)式

  刪除某斷點

  7.clear 斷點所在行號

  清除某斷點

  8.查看斷點列表

  info break

  9.watch counter>15

  當(dāng)counter>15的時候程式終止

  10.當(dāng)程式崩潰的時候linux會生成一個core文件,,能用

  gdb a.out core

  where

  查看導(dǎo)致崩潰的原因

  11.continue

  恢復(fù)程式運行,,直到遇見下一個斷點

  12.run

  程式開始運行,直到遇見斷點

  13.step

  執(zhí)行一行代碼

  14.next

  和s不同的是他不跟蹤到代碼的內(nèi)部,,一步一步執(zhí)行代碼

  15.直接回車為執(zhí)行上一個命令

  16.print 變量

  打印某一變量的值

  17.display 變量

  每次運行到斷點就顯示變量的值,,用于觀察變量的變化

  18.set 變量=

  在程式執(zhí)行中重新設(shè)置某變量的值

  19.printf "%2.2s\n",(char*)0x120100fa0

  結(jié)果打印出:He

  20. 設(shè)置gdb的列寬,以下為將屏幕設(shè)置為70列

  set width 70

  21. info args 列出你程式所接受的命令行參數(shù)

  info registers列出寄存器的狀態(tài)

  info breakpoint列出在程式中設(shè)的斷點

  要獲得周詳?shù)年P(guān)于info的信息用help info.

  22. set

  這個命令用來為你的程式設(shè)置一個運行環(huán)境(使用一個表達(dá)式)。

  set prompt $把gdb的提示符設(shè)為$.

  set args 可指定運行時參數(shù),。(如:set args 10 20 30 40 50)

  show args 命令能查看設(shè)置好的運行參數(shù),。

  23. show

  show命令用來顯示gdb自身的狀態(tài)。

  使用’set’命令能改動絕大多數(shù)由’show’顯示的信息

  使用show radix命令來顯示基數(shù)

  用不帶所有參變量的’set’命令能顯示所有能設(shè)置的變量的值

  有三個變量是不能用’set’命令來設(shè)置的:

  show version顯示gdb的版本號

  show copying顯示版權(quán)信息

  show warranty顯示擔(dān)保信息

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多