如何获取函数调用栈! ( 积分: 200 )

  • 主题发起人 liloxing
  • 开始时间
L

liloxing

Unregistered / Unconfirmed
GUEST, unregistred user!
在标准C++环境中,如何将函数的调用栈输出(比如保存到文件中,可以是debug时用).
例如,有3个函数:
void a()
{
b();
}
void b()
{
c();
}
void c()
{
//**************//
// 打印调用关系.....
//*************//
}
如何在C函数中写代码以将其调用顺序输出?
输出结果应该为:
a
b
函数a,b只是举的例子,实际中是不确定的.
 
H

hmilyyanggq

Unregistered / Unconfirmed
GUEST, unregistred user!
从堆栈中读取调用地址,与a,b地址比较,得到调用顺序,具体没做过,提供一个思路
 
L

lsaturn

Unregistered / Unconfirmed
GUEST, unregistred user!
有个办法,就是学习OllyDbg的实现,自己debug自己,同时查找map里面的符号表,可以在不影响原来的程序情况下得到调用堆栈
 
T

TK128

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,这是不可能的,运行时已经不可能知道这些信息了,编译时倒是可以知道,但没有什么意义
 
D

delp

Unregistered / Unconfirmed
GUEST, unregistred user!
向上取一级比较容易。
全部取出来应该也不算难。
 
L

lisongmagic

Unregistered / Unconfirmed
GUEST, unregistred user!
好贴不要沉
顶顶顶顶顶顶顶顶顶顶顶
 
顶部