2017-02-24 30 views
0

似乎只有當我遇到一個函數並觀察函數局部變量的值時,手錶纔有用。我的問題是,我可以觀察並查看函數的輸入參數是否大於數字?例如。我有這樣的代碼:GDB:我可以在另一個作用域中添加一個「監視」變量嗎?

$cat testWatch.cpp 
#include<stdio.h> 
void f(int i){ 
    ++i; 
    printf("%d\n",i); 
} 
int main(){ 
    int i=1; 
    f(2); 
    f(3); 
    ++i; 
    f(4); 
    ++i; 
    return 0; 
} 

我想

(1)當程序處於「主」的功能,我想設置一個「看」內F()。可能嗎? (2)我想在f()函數的開頭設置一個「監視」點,當輸入「int i」大於2時,我希望gdb停止。可能嗎?

回答

3

1)你真的需要'看'嗎?通過指定行號在f()內設置條件斷點是很簡單的。 (或在較不平凡的程序中,fileName:lineNum)

2)您描述的行爲是一個條件斷點。

(gdb) break 2 if (i > 2) 
Breakpoint 5 at 0x400531: file test.c, line 2. 
(gdb) run 
Starting program: /tmp/test 
3 

Breakpoint 5, f (i=3) at test.c:3 
相關問題