C++如何输出调用堆栈

czlc 2008-08-27 01:12:40
RT
...全文
941 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
tj_swjtu 2010-07-07
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
blackcat242 2008-08-31
  • 打赏
  • 举报
回复
http://www.codeproject.com/threads/StackWalker.asp
这个就是输入堆栈的一个代码,可以看下
ysmashimaro 2008-08-29
  • 打赏
  • 举报
回复
嵌入汇编指令
堆栈栈顶地址在ss:sp,把它赋给寄存器或者一个变量里,输出.
jinwei1984 2008-08-29
  • 打赏
  • 举报
回复
回复15楼:
是不是该ptr + n ?
一般系统 栈是从高地址到低地址增长的
czlc 2008-08-28
  • 打赏
  • 举报
回复
还是一头雾水。
blh 2008-08-27
  • 打赏
  • 举报
回复
然后你需要查询符号表来确定具体函数
blh 2008-08-27
  • 打赏
  • 举报
回复
int test()
{
int a;
char *ptr = (char *)&a;
int n;
for (n = 0; n < 100; n++)
{
printf("addr:%x\n", ptr - n);
}
}
cang0lang 2008-08-27
  • 打赏
  • 举报
回复

C++ debug调试的时候,
有个调用栈,
记录你调用的那些函数。。
你是说这个么?
coverallwangp 2008-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 czlc 的回复:]
c++ 在执行过程中,可以获得当前的调用堆栈并输出吗?
[/Quote]

堆栈是系统管理的,好像不能输出。
不过你可以在debug模式下,查看汇编代码 memory、Registers等
K行天下 2008-08-27
  • 打赏
  • 举报
回复
vc 进入debug,查看汇编代码 memory、Registers等
e_sharp 2008-08-27
  • 打赏
  • 举报
回复
UP
myzcp123 2008-08-27
  • 打赏
  • 举报
回复
是不是用new 来分配内存呀?new分配内存就是从堆上分配的
richbirdandy 2008-08-27
  • 打赏
  • 举报
回复
唉。。。
lzr4304061988012 2008-08-27
  • 打赏
  • 举报
回复
up
two_ears 2008-08-27
  • 打赏
  • 举报
回复
debug可以输出那是因为写入了调试信息,唉
fibbery 2008-08-27
  • 打赏
  • 举报
回复
由于系统维护调用堆栈,所以,对于堆栈,我们的程序中是不知道其内容的类型信息的,所以,无法按照其实际意义输出出来!
但是,可以输出其二进制内容。
healer_kx 2008-08-27
  • 打赏
  • 举报
回复
揭帖吧,要不用C++/CLI,
czlc 2008-08-27
  • 打赏
  • 举报
回复
c++ 在执行过程中,可以获得当前的调用堆栈并输出吗?
Vegertar 2008-08-27
  • 打赏
  • 举报
回复
不会是调用 std::cout << XX 吧. operator<< ?....
AlwaysSLH 2008-08-27
  • 打赏
  • 举报
回复
不明白什么意思,期待高手~~~
up
加载更多回复(1)

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧