2010年11月3日 星期三

[gdb 命令] list : 顯示源代碼


語法 :
list, l | List specified function or line

list LineNumber <顯示特定行數>
list File:LineNum <顯示特定檔案的特定行數>
list Function <顯示特定函數代碼>
list File:Function <顯示特定檔案內某函數>
list *Address <顯示記憶體位置>

使用範例 :
考慮代碼 :
- list1.c :
  1. #include   
  2. #include "list2.h"  
  3.   
  4. int min(int a, int b);  
  5.   
  6. int main(void) {  
  7.         int maxValue = max(1014);  
  8.         int minValue = min(1014);  
  9.         return 0;  
  10. }  
  11.   
  12. int min(int a, int b) {  
  13.         if(a<=b) return a;  
  14.         else return b;  
  15. }  

- list2.h :
  1. int max(intint);  

- list2.c :
  1. #include "list2.h"  
  2.   
  3. int max(int a, int b) {  
  4.         if(a>=b) return a;  
  5.         else return b;  
  6. }  
使用下列命令 compile 程式並接著用gdb 開啟 :
linux-tl0r:~/gdbDemo # gcc -g list1.c list2.h list2.c -o list_demo
linux-tl0r:~/gdbDemo # gdb list_demo
(gdb) list 3 <列出 list1.c 第 3 行附近代碼>
1 #include
2 #include "list2.h"
3
4 int min(int a, int b);
5
6 int main(void) {
7 int maxValue = max(10, 14);
8 int minValue = min(10, 14);
9 return 0;
10 }
(gdb) list list2.c:3 <列出 list2.c 第3行附近代碼>
1 #include "list2.h"
2
3 int max(int a, int b) {
4 if(a>=b) return a;
5 else return b;
6 }
(gdb) list min <列出函數 min() 附近代碼>
7 int maxValue = max(10, 14);
8 int minValue = min(10, 14);
9 return 0;
10 }
11
12 int min(int a, int b) {
13 if(a<=b) return a;
14 else return b;
15 }
(gdb) list list2.c:max <列出 list2.c 中的 max() 函數附近代碼>
1 #include "list2.h"
2
3 int max(int a, int b) {
4 if(a>=b) return a;
5 else return b;
6 }
(gdb) print main <列印 main() 函數記憶體位置>
$1 = {int (void)} 0x80483e4 

(gdb) list *0x80483e4 <列印記憶體 0x80483e4 附近代碼>
0x80483e4 is in main (list1.c:6).
1 #include
2 #include "list2.h"
3
4 int min(int a, int b);
5
6 int main(void) {
7 int maxValue = max(10, 14);
8 int minValue = min(10, 14);
9 return 0;
10 }
This message was edited 3 times. Last update was at 01/11/2010 17:41:13

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...