bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

gdb調試linux命令,linux使用gdb調試

linux gdb基礎命令

你的gdb壓根就沒有解析出來斷點,你的庫有問題。你run后bt一下就可以進入斷點的

網站設計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發可交付網站源代碼;符合網站優化排名的后臺管理系統;成都做網站、網站制作收費合理;免費進行網站備案等企業網站建設一條龍服務.我們是一家持續穩定運營了10多年的創新互聯公司網站建設公司。

你把代碼發我吧,給你調試

linux中 怎么使用gdb調試程序

gdb是用來調試二進制程序的,不能調試python腳本。 python自帶pdb模塊,可以用來調試自己的腳本。 使用python -m pdb ,交互方式,命令與gdb類似。

Break的Linux下GDB調試

作用:設置斷點(BreakPoint)

我們使用break命令來設置斷點,break在進入指定函數時停住。C++中能使用class::function或function(type,type)格式來指定函數名。

break

在指定行號停住。

break +offset

break -offset

在當前行號的前面或后面的offset行停住。offiset為自然數。

break filename:linenum

在源文件filename的linenum行處停住。

break filename:function

在源文件filename的function函數的入口處停住。

break *address

在程式運行的內存地址處停住。

break

break命令沒有參數時,表示在下一條指令處停住。

break…if

…能是上述的參數,condition表示條件,在條件成立時停住。比如在循環境體中,能設置break if i=100,表示當i為100時停住程式。

查看斷點時,可使用info命令,如下所示:(注:n表示斷點號)

info breakpoints [n]

info break [n]

linux中怎么使用gdb調試進程有dettach

在2.5.60版Linux內核及以后,GDB對使用fork/vfork創建子進程的程序提供了follow-fork-mode選項來支持多進程調試。follow-fork-mode的用法為:set follow-fork-mode [parentchild]parent: fork之后繼續調試父進程,子進程不受影響。 child: fork之后調試子進程,父進程不受影響。 因此如果需要調試子進程,在啟動gdb后:(gdb) set follow-fork-mode child并在子進程代碼設置斷點。此外還有detach-on-fork參數,指示GDB在fork之后是否斷開(detach)某個進程的調試,或者都交由GDB控制:set detach-on-fork [onoff]on: 斷開調試follow-fork-mode指定的進程。 off: gdb將控制父進程和子進程。follow-fork-mode指定的進程將被調試,另一個進程置于暫停(suspended)狀態。 注意,最好使用GDB 6.6或以上版本,如果你使用的是GDB6.4,就只有follow-fork-mode模式。follow-fork-mode/detach-on-fork的使用還是比較簡單的,但由于其系統內核/gdb版本限制,我們只能在符合要求的系統上才能使用。而且,由于follow-fork-mode的調試必然是從父進程開始的,對于fork多次,以至于出現孫進程或曾孫進程的系統,例如上圖3進程系統,調試起來并不方便。Attach子進程 眾所周知,GDB有附著(attach)到正在運行的進程的功能,即attach pid命令。因此我們可以利用該命令attach到子進程然后進行調試。例如我們要調試某個進程RIM_Oracle_Agent.9i,首先得到該進程的pid[root@tivf09 tianq]# ps -efgrep RIM_Oracle_Agent.9i nobody 6722 6721 0 05:57 ? 00:00:00 RIM_Oracle_Agent.9i root 7541 27816 0 06:10 pts/3 00:00:00 grep -i rim_oracle_agent.9i通過pstree可以看到,這是一個三進程系統,oserv是RIM_Oracle_prog的父進程,RIM_Oracle_prog又是RIM_Oracle_Agent.9i的父進程。[root@tivf09 root]# pstree -H 6722通過 pstree 察看進程啟動GDB,attach到該進程用 GDB 連接進程現在就可以調試了。一個新的問題是,子進程一直在運行,attach上去后都不知道運行到哪里了。有沒有辦法解決呢?一個辦法是,在要調試的子進程初始代碼中,比如main函數開始處,加入一段特殊代碼,使子進程在某個條件成立時便循環睡眠等待,attach到進程后在該代碼段后設上斷點,再把成立的條件取消,使代碼可以繼續執行下去。至于這段代碼所采用的條件,看你的偏好了。比如我們可以檢查一個指定的環境變量的值,或者檢查一個特定的文件存不存在。以文件為例,其形式可以如下:void debug_wait(char *tag_file) { while(1) { if (tag_file存在) 睡眠一段時間; else break; } }當attach到進程后,在該段代碼之后設上斷點,再把該文件刪除就OK了。當然你也可以采用其他的條件或形式,只要這個條件可以設置/檢測即可。Attach進程方法還是很方便的,它能夠應付各種各樣復雜的進程系統,比如孫子/曾孫進程,比如守護進程(daemon process),唯一需要的就是加入一小段代碼。GDB wrapper 很多時候,父進程 fork 出子進程,子進程會緊接著調用 exec族函數來執行新的代碼。對于這種情況,我們也可以使用gdb wrapper 方法。它的優點是不用添加額外代碼。其基本原理是以gdb調用待執行代碼作為一個新的整體來被exec函數執行,使得待執行代碼始終處于gdb的控制中,這樣我們自然能夠調試該子進程代碼。還是上面那個例子,RIM_Oracle_prog fork出子進程后將緊接著執行RIM_Oracle_Agent.9i的二進制代碼文件。我們將該文件重命名為RIM_Oracle_Agent.9i.binary,并新建一個名為RIM_Oracle_Agent.9i的shell腳本文件,其內容如下:[root@tivf09 bin]# mv RIM_Oracle_Agent.9i RIM_Oracle_Agent.9i.binary [root@tivf09 bin]# cat RIM_Oracle_Agent.9i #!/bin/sh gdb RIM_Oracle_Agent.binary當fork的子進程執行名為RIM_Oracle_Agent.9i的文件時,gdb會被首先啟動,使得要調試的代碼處于gdb控制之下。

[Linux]gdb查看內存區命令

GNU調試器(GNU Debugger, GDB)是一個開源的源代碼級的調試工具,其性能優良、功能齊全、易于使用,在嵌入式系統開發過程中扮演著越來越重要的角色。接下來是我為大家收集的[Linux]gdb查看內存區命令,希望能幫到大家。

[Linux]gdb查看內存區命令

用gdb查看內存

格式: x /nfu

說明

x 是 examine 的縮寫

n表示要顯示的內存單元的個數

f表示顯示方式, 可取如下值

x 按十六進制格式顯示變量。

d 按十進制格式顯示變量。

u 按十進制格式顯示無符號整型。

o 按八進制格式顯示變量。

t 按二進制格式顯示變量。

a 按十六進制格式顯示變量。

i 指令地址格式

c 按字符格式顯示變量。

f 按浮點數格式顯示變量。

u表示一個地址單元的長度

b表示單字節,

h表示雙字節,

w表示四字節,

g表示八字節

Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),

t(binary), f(float), a(address), i(instruction), c(char) and s(string).

Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes)

舉例

x/3uh buf

表示從內存地址buf讀取內容,

h表示以雙字節為一個單位,

3表示三個單位,

u表示按十六進制顯示

例子:

n是個局部變量

Breakpoint 1, main (argc=1, argv=0xbffff3a4) at calc.c:7

7 int n = atoi(argv[1]);

(gdb) print n

$1 = (int *) 0xbffff2ec

(gdb) x 0xbffff2ec

0xbffff2ec: 0x00282ff4

(gdb) print * (int *) 0xbffff2ec

$2 = 2633716

(gdb) x /4xw 0xbffff2ec

0xbffff2ec: 0x00282ff4 0x080484e0 0x00000000 0xbffff378

(gdb) x /4dw 0xbffff2ec

0xbffff2ec: 2633716 134513888 0 -1073745032

(gdb)

看了“[Linux]gdb查看內存區命令”還想看:

1. Linux使用dmidecode命令查看內存型號

2. Linux下查看CPU型號,內存大小,硬盤空間命令

3. 如何在Linux命令行中查看目錄的大小

4. LINUX 查看硬件配置命令的教程

使用GNU/gdb調試Linux C/C++可執行程序查看出錯源代碼、設置斷點

gdb是GNU開源組織發布的一個強大的Linux程序調試工具,比圖形化的調試工具更強大,主要來調試C/C++語言程序。

Debug 版本的可執行程序包含調試信息,用于程序員調試程序。

Release 版本的可執行程序往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以方便用戶使用。

用gcc/g++編譯時,要加上-g選項生成debug版本的可執行程序,否則就無法使用gdb調試了。

r 表示開始run, 如果在運行的過程中發生了錯誤,比如segmentation fault,可以查看此時的出錯源代碼:

通過b或者break設置斷點,斷點的設置可以通過函數名、行號、文件名+函數名、文件名+行號以及偏移量、地址等進行設置。

比如在function Peer_auto_save上設置斷點,在peer.c的第136行設置斷點:

從斷點處繼續運行

退出gdb

網頁名稱:gdb調試linux命令,linux使用gdb調試
文章起源:http://vcdvsql.cn/article46/heopeg.html

成都網站建設公司_創新互聯,為您提供域名注冊、企業網站制作全網營銷推廣、面包屑導航、商城網站定制網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計