【发布时间】:2011-03-27 22:42:51
【问题描述】:
嗨,
我想知道如何打印当前程序栈的内容(使用C语言)。
比如说。
call_some_function()
{
...
...
print_stack_till_now();
return something;
}
call_some_other_function()
{
...
...
print_stack_till_now();
return something;
}
main()
{
print_stack_till_now();
call_some_function();
print_stack_till_now();
call_some_other_function();
print_stack_till_now();
return 0;
}
在上一个示例中(可能不是一个完全示例:))当我调用 print_stack_till_now() 函数时,我应该能够打印到该点构建的当前堆栈(包括较新的函数调用条目、返回位置、它们的论据等)
这样的函数在 C 语言中是否可行(甚至是内联汇编)。请指出编写这样一个函数所需的理论(或现有代码会更好)。
在 gdb 中我们可以使用 backtrace 来查看当前堆栈,我正在寻找类似的东西。为什么我需要这个?...只是想学习。
谢谢。
【问题讨论】:
-
我认为没有任何本机 C 函数,因此它需要更多信息,例如操作系统和任何人都可以给你一个有效的答案。无论如何,您示例中的每个调用都可能返回/输出完全相同的内容。
-
@jon_darkstar:我编辑了代码。我想这就是我的意思,但写了一个不同的sn-p。谢谢@Ubiquite:Linux
标签: c