[英]How to declare a variable in the scope of a given function with GDB?
我知道gdb允許使用set
命令設置已聲明的變量。
是否有可能gdb在給定函數的范圍內動態聲明一個新變量?
您可以動態分配一些空間並使用它來存儲新變量。 根據“當前函數的范圍”的含義,它可能不是您想要的。
但是當你有一個帶有指向輸出參數的指針的函數func()時,它的外觀如下:
set $foo = malloc(sizeof(struct funcOutStruct))
call func($foo)
p *$foo
call free($foo)
對於C(可能還有C ++)代碼,這將是非常困難的,因為在大多數實現中這樣做會涉及移動堆棧指針,這會使函數的退出代碼失敗,因為它不再匹配堆棧幀的大小。 此外,函數中訪問局部變量的所有代碼都會突然冒險到達錯誤的位置,這也很糟糕。
所以,我不這么認為,不。
這就是我用來打印變量的方式
(gdb) set $path=((ngx_path_t **)ngx_cycle->paths.elts)[2]
(gdb) print *$path
$16 = {
name = {
len = 29,
data = 0x80ed15c "/usr/local/nginx/fastcgi_temp"
},
len = 5,
level = {1, 2, 0},
manager = 0,
loader = 0,
data = 0x0,
conf_file = 0x0,
line = 0
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.