2010年11月21日 星期日

[gdb 命令] display/undisplay : 持續顯示變數或是表示式的值

語法 : 

display | Print value of expression EXP each time the program stops.
undisplay | Cancel some expressions to be displayed when program stops.


使用範例 : 
考慮代碼 : 
- display.c :
  1. #include   
  2.   
  3. int main(void) {  
  4.         int a=1, b=2, c=3;  
  5.         ++a; ++b; ++c;  
  6.         ++a; ++b; ++c;  
  7.         ++a; ++b; ++c;  
  8.         ++a; ++b; ++c;  
  9.         return 0;  
  10. }  

編譯代碼並用 gdb 開啟程式 : 
linux-tl0r:~/gdbDemo # gcc -g display.c -o display <編譯代碼>
linux-tl0r:~/gdbDemo # gdb display <開啟 gdb 模式>
(gdb) list <顯示代碼>
1 #include
2
3 int main(void) {
4 int a=1, b=2, c=3;
5 ++a; ++b; ++c;
6 ++a; ++b; ++c;
7 ++a; ++b; ++c;
8 ++a; ++b; ++c;
9 return 0;
10 }
(gdb) start <開始執行>
Temporary breakpoint 1 at 0x80483ea: file display.c, line 4.
Starting program: /root/gdbDemo/display
Temporary breakpoint 1, main () at display.c:4
4 int a=1, b=2, c=3;
(gdb) display a <在每次程式stop時, 顯示變數 a>
1: a = -1208205324 
(gdb) until 5 <執行到第5行前>
main () at display.c:5
5 ++a; ++b; ++c;
1: a = 1 <在第4行執行完畢後 a=1>
(gdb) display b <接著在每次程式stop, 顯示變數b>
2: b = 2 <目前 b=2>
(gdb) until 7 <執行到第7行前>
main () at display.c:7
7 ++a; ++b; ++c;
2: b = 4
1: a = 3
(gdb) undisplay b <不能直接把變數當作 undisplay 的參數>
Arguments must be display numbers.
(gdb) undisplay 1 <取消顯示變數 a>
(gdb) display c <在每次程式stop, 顯示變數 c>
3: c = 5
(gdb) until 8 <執行到第8行之前>
main () at display.c:8
8 ++a; ++b; ++c;
3: c = 6
2: b = 5
(gdb) c
Continuing.

Program exited normally.

沒有留言:

張貼留言

[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...