我一直在四处寻找,但无法弄清楚如何在GDB中打印出评估结果。例如,在下面的代码中:
if (strcmp(current_node->word,min_node->word) > 0)
min_node = current_node;
(上面我正在尝试一种检查字符串字母顺序的可能方法,但并不完全确定它是否正常工作。)
现在我可以看min_node
并查看值是否发生变化,但是在更复杂的代码中,这有时会更复杂。我想知道是否有一种简单的方法来观察GDB /程序流当前所在行的测试评估。
答案 0 :(得分:16)
gdb中没有表达式单步执行,如果这是你要求的。
您的选择(从最常见到最不经常使用):
print strcmp(current_node->word,min_node->word)
。令人惊讶的是,这有效:gdb可以通过将代码注入正在运行的程序并让它执行代码来评估函数调用。当然,如果功能有副作用或可能崩溃,这是相当危险的;在这种情况下,它是如此无害,人们通常不会考虑潜在的问题。答案 1 :(得分:4)
您可以尝试输入:
调用“my_function()”
据我记得,虽然内联函数时它不起作用。