VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 240|回复: 2

[交流] 发一套自己写的捕获异常并打印调用堆栈的代码

[复制链接]
61_avatar_middle
在线会员 用户已被注册 发表于 2018-8-30 22:13:22 | 显示全部楼层 |阅读模式
像python、java那样的一般在出错的时候会打印崩溃的堆栈方便查找,而在Windows平台上经常弹一个错误的框框,光这样很难找到对应出错的代码位置,所以这里利用了Windows的SEH机制在程序崩溃时根据线程环境打印出异常原因以及函数调用的堆栈,特此发出来与大家分享
测试代码
  1. void Func5()
  2. {
  3.         CBaseException sw;
  4.         sw.ShowCallstack();
  5. }

  6. void Func4()
  7. {
  8.         Func5();
  9. }
  10. void Func3()
  11. {
  12.         Func4();
  13. }
  14. void Func2()
  15. {
  16.         Func3();
  17. }
  18. void Func1()
  19. {
  20.         Func2();
  21. }

  22. void StackWalkTest()
  23. {
  24.         Func1();
  25. }

  26. void ExceptionTest()
  27. {
  28.         int i = 1;
  29.         int c = i / 0;
  30. }

  31. void TryTest()
  32. {
  33.         try
  34.         {
  35.                 SET_DEFAUL_EXCEPTION();
  36.                 int *p = NULL;
  37.                 *p = 0;
  38.         }
  39.         catch (CBaseException &e)
  40.         {
  41.                 e.ShowExceptionInformation();
  42.         }
  43. }
  44. int _tmain(int argc, TCHAR* argv[])
  45. {
  46.         SET_DEFULTER_HANDLER();
  47.         CBaseException be;
  48.         be.ShowLoadModules();
  49.         StackWalkTest();
  50.         TryTest();//调用异常处理

  51.         ExceptionTest();
  52.         return 0;
  53. }
复制代码


打印的部分结果
发一套自己写的捕获异常并打印调用堆栈的代码

源码: 发一套自己写的捕获异常并打印调用堆栈的代码 Crash.zip (16.7 KB, 下载次数: 8)

评分

参与人数 1威望 +2 驿站币 +2 激情 +2 收起 理由
51_avatar_small Syc + 2 + 2 + 2 感谢分享!

查看全部评分





上一篇:分享一套C++基础试题
下一篇:32位和64位下各种数据类型大小的对比

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-8-30 23:23:07 | 显示全部楼层
这个不错哦~支持分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
在线会员 amazingzhang 发表于 2018-9-3 15:57:28 | 显示全部楼层
这个不错,谢谢分享,有用

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-20 19:37

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表