Linux下gdb調試,Linuxgdb調試
關於gdb的其他客套話不多說,直接進入正題。
一、gdb基本命令列表:
| 命令 |
解釋 |
簡寫 |
| file |
裝入想要調試的可執行檔 |
無 |
| list |
列出產生執行檔案原始碼的一部分 |
l |
| next |
執行一行原始碼但不進入函數內部 |
n |
| step |
執行一行原始碼而且進入函數內部 |
s |
| run |
執行當前被調試的程式 |
r |
| continue |
繼續執行程式 |
c |
| quit |
終止gdb |
q |
| print |
輸出當前指定變數的值 |
p |
| break |
在代碼裡設定斷點 |
b |
| info break |
查看設定斷點的資訊 |
ib |
| delete |
刪除設定的斷點 |
d |
| watch |
監視一個變數的值,一旦值有變化程式停住 |
wa |
| help |
gdb中的協助命令 |
h |
二、gdb命令運用舉例:
1.建立一個源檔案vi yrp.cc,原始碼如下:
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
int main()
{
int i,j;
cout<<endl<<"Input two int number:"<<endl;
cin>>i>>j;
cout<<"Before swap(),i="<<i<<" j="<<j<<endl;
swap(i,j);
cout<<"After swap(),i="<<i<<" j="<<j<<endl<<endl;
return 0;
}
2.產生可執行檔g++ -g -o yrp yrp.cc 注意必須使用-g參數,編譯會加入調試資訊,否則無法調試執行檔案.
3.啟動調試gdb yrp
載入被偵錯工具file yrp
4.查看源檔案list 1,(由第一行開始)斷行符號重複上一次指令
5.設定調試斷點break 16,在第16行設定斷點,info break查看斷點資訊(簡寫ib)
6.調試運行輸入run
7.單步調試step,進入函數內部
8.查看變數print 舉例print b
9.查看函數堆棧bt,退出函數finish
10.繼續運行直到下一個斷點或主函數結束continue
11.退出調試quit
結束!
linux 下面怎使用gdb調試多個c檔案?
由衷的建議你去學校一下makefile的使用方法,將幾個檔案混合編譯成一個可執行檔,記住在編譯的過程中要添加-g的參數,這樣編譯出來的可執行檔才能通過gdb進行測試。注意makefile的文法要求很高,空格錯了都不行,如果你要學習linux環境的進階編程不會用makefile的話是會有重重困難的,祝你學習順利{100%原創,適當給分即可}
如果不使用makefile的話
gcc -g -o a.out 1.c 2.c 3.c 4.c 5.c
a.out為產生的檔案名稱。其他的你懂的!
Linux C++怎用gdb調試?
既然會在windows下調試,在linux下也是一樣的。
首先,linux的環境變數PATH的設定,如果是想臨時使用的,可以直接在shell終端中:
export PATH=$PATH:[你要設定的路徑]
$PATH相當於win下的%PATH%,這裡用冒號:分隔,相當於win下的分號;
如果想永久生效,可以:
cd ~ //到該使用者目錄下
vi .bash_profile //開啟屬性檔案
export PATH=$PATH:[你要設定的路徑] //同樣的設定
:wq //儲存
這樣就設定好了,但預設情況下該屬性檔案在使用者登入時才生產,如果想立即生效,可以:
source ~/.bash_profile
編譯器植入linux?是在linux下安裝gcc g++ gdb吧?參考這篇文章吧:
blog.csdn.net/...948806
至於調試用的命令,簡單地說:
1.在編譯時間使用-g參數,如:gcc -g foo.c -o foo
2.然後進行調試,如:
gdb ./foo //調試foo
(gdb) l //列出原始碼
(gdb) b 5 //在第5行加入斷點
(gdb) r //運行調試
(gdb) p size //假如有個變數為size,這樣看它的值
(gdb) c //繼續執行直到下一個斷點
(gdb) n //執行下一行語句
(gdb) s //進入正在執行的函數內部
....
不寫了,看這篇文章吧
blog.csdn.net/...935052