社区
工具平台和程序库
帖子详情
VS2008 控制台应用程序ASSERT时,如何查看函数调用堆栈
chos2006
2011-09-08 04:32:28
我现在有一个VS2008的控制台应用程序,该程序用到了外部库。
程序运行时在库中引发了一个断言,然后程序就中断了,停留在引发断言的地方。
我能够看到断言是那个文件出来的,但是该文件是封在库中的,我没法知道问题是从哪里引发出来的。
所以我想查看此时程序的调用情况,请问该怎么办?
比如程序在异常的时候会有函数的调用堆栈可以看,有没有什么设置之类的,可以把断言当成异常的。
请教大侠指点,多谢!
...全文
1537
13
打赏
收藏
VS2008 控制台应用程序ASSERT时,如何查看函数调用堆栈
我现在有一个VS2008的控制台应用程序,该程序用到了外部库。 程序运行时在库中引发了一个断言,然后程序就中断了,停留在引发断言的地方。 我能够看到断言是那个文件出来的,但是该文件是封在库中的,我没法知道问题是从哪里引发出来的。 所以我想查看此时程序的调用情况,请问该怎么办? 比如程序在异常的时候会有函数的调用堆栈可以看,有没有什么设置之类的,可以把断言当成异常的。 请教大侠指点,多谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenwei0304
2012-12-04
打赏
举报
回复
如果是交互线程,且另外一个线程的影响,而产生了这个线程的中断。 1,查看发生交互的变量。 2,查看另一个线程的调用堆栈情况。
mujiok2003
2012-12-04
打赏
举报
回复
从Visual studio开始调试(F5或attach),等触发断言后,分析代码吧。引起异常的代码可能在本帧,有可能在若干帧之前,甚至在另外的栈,另外的进程,慢慢享受整个诊断的过程吧。
chenwei0304
2012-12-04
打赏
举报
回复
是不是标准库的断言,进入之后,偏离自己的程序太远了,所以,在当前的CALL STACK看不到自己的函数。异常的时候会引发一长串的函数调用。因为需要弹出对话框,而这个对话窗口是需要一长串的函数调用。所以,你就看不到自己的函数了。 办法之一:就是在很上层的函数中(不认识也没关系),设置一个端点,然后再次运行,看是否能够看到自己的函数。 如果不行,就继续办法之一,直到看到自己的函数为止。 理论上,不管函数调用多深,都能够得到所有函数调用的轨迹。只是有时候是进入库文件,只能看到汇编代码;有源文件的可以看到源代码。
chos2006
2011-09-15
打赏
举报
回复
没有人知道么?汗
luciferisnotsatan
2011-09-13
打赏
举报
回复
???
vs2005 调试,遇到断言中断后,可以看到call stack。
外部库,如果你没符号文件,没源码,当然没法像自己代码那么调。最多就是看汇编,call stack应该是一层层从某处开始的偏移量。
chos2006
2011-09-13
打赏
举报
回复
事实上,这个程序是MTK提供的,所以郁闷啊。其实我真正想问的问题是,中断后为什么没有call stack可以查看,所以也就不能找出问题究竟是从哪里引发的。正常情况下,只要中断,都会出现call stack的。所以怀疑与工具的设置有关。将别人的设置导入后,出现过call stack,但是后来不知道怎么搞的,又没有了。所以郁闷
chos2006
2011-09-13
打赏
举报
回复
这个窗口是有调出来的,程序发生异常时是能正常看到的,只是ASSERT后,看不到而已
就想叫yoko
2011-09-13
打赏
举报
回复
从楼主5楼的回复来看, 是不是没把call stack窗口调出来
中断后
alt+7
或者
菜单中 debug -> windows -> call stack
masterz
2011-09-09
打赏
举报
回复
看看
How to: Attach to a Running Process
一无所有自知之明
2011-09-08
打赏
举报
回复
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
ouyh12345
2011-09-08
打赏
举报
回复
中断后,可以查看调用堆栈啊
jackyjkchen
2011-09-08
打赏
举报
回复
调用堆栈不分exe还是dll吧,直接就能看,如果定位到标准库,别看标准库的,一直回溯到自己的代码
AndyZhang
2011-09-08
打赏
举报
回复
还是先找找自己程序的问题吧
VC、
VS
2005调试技巧
本文详细介绍VC编译错误处理、调试技巧、项目配置及快捷键等内容,包括常见错误解析、调试器使用方法、项目文件说明及环境参数设置等。
C#属性自引用导致栈溢出的原理与防御
本文深入剖析C#中属性getter内自引用导致无限递归、触发StackOverflowException的底层机制,解释其在WinForms设计器中引发
VS
2008
进程崩溃的根本原因;强调该异常不可捕获的CLR设计特性,并指出重命名属性为语义化别名(如DisplayText替代Text)是唯一健壮解法;同
时
提出工程级防御措施,包括命名公约、Roslyn静态分析器和自动化CI检查。
MPI编程
本文详细介绍了MPI编程的基本概念、实现方法、程序特点、安装配置、运行环境搭建及MPI程序开发实例,旨在帮助开发者掌握基于消息传递的并行编程技术MPI,包括MPI程序的并行性、消息传递接口、开发环境配置、运行方式和性能优化策略。
NHibernate内存SQLite映射测试实战指南
本文详解如何使用SQLite内存数据库构建可靠的NHibernate映射测试体系,涵盖技术选型逻辑(对比SQL Server/SQL CE)、NUnit 2.5.2串行化适配、显式事务封装、SessionFactory隔离设计、Session.Clear()必要性、级联与孤儿删除验证,以及SQLite3.dll非托管依赖的正确部署策略,聚焦持久化层自动化测试的确定性、可重复性与高效性。
llama-cpp-python安装包(arm版本)
llama-cpp-python安装包(arm版本)
工具平台和程序库
24,851
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章