我在GDB会话中遇到了一个名为ngx_http_variable_value_t
的结构体,我想打印它在控制台中的字段。
这可能吗?
答案 0 :(得分:98)
您可以使用GDB命令ptype
打印出结构或类的定义。
答案 1 :(得分:55)
如果你有内置的调试符号,你应该能够打印值:print variable
或print *variable
如果它是指向结构的指针。
答案 2 :(得分:10)
<强> var count = 3;
var results = [];
for(let i = 0 ; i < count ; i++){
browser.call(function(){
console.log(`counter is ${i}`);
browser.refresh();
element(by.id('h-top-questions')).getText().then(function(text) {
results.push(`${i}:${text}`);
});
});
}
browser.call(function() {
console.log("done!", results);
});
强>
此选项还为set print pretty on
提供换行符和缩进。
您更喜欢哪个:
p *my_struct_pointer
或:
$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}
答案 3 :(得分:5)
答案 4 :(得分:2)
我只是通过gdb的图形前端完成了这个。在gdb在线文档中找到此条目。希望能帮助到你。我相信这将要求代码是在包含调试信息的情况下创建的。
ptype [arg] ptype接受与whatis相同的参数,但打印类型的详细描述,而不仅仅是类型的名称。
答案 5 :(得分:1)
我会看一下Data Display Debugger。
答案 6 :(得分:0)
p *((struct my_struct*) variable)
这将帮助您在gdb中打印struct的详细信息