首页
社区
课程
招聘
如何抓住程序在哪里退出的?想用于出错时生成Dump
发表于: 2021-5-20 10:09 5470

如何抓住程序在哪里退出的?想用于出错时生成Dump

2021-5-20 10:09
5470
收藏
免费 0
支持
分享
最新回复 (31)
雪    币: 39209
活跃值: (7505)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
26
sunbinjin 程序自己都检测到堆栈溢出了,应该是字符串复制过界了。
求一个简单的delphi堆栈溢出的实现源码;
我看这挺好,搞点暗桩儿也甭调试了。
2021-5-22 11:48
0
雪    币: 5292
活跃值: (3570)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SAO
27
大佬们,请教一下dump的原理,比如x32dbg里dump插件dump的时候仅仅是读当前正在调试进程的内存数据然后写入文件吗?查dump原理的资料发现网上资料好少
2021-5-22 15:30
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
28
ookkaa 4d5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4j5$3I4^5M7Y4W2Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3j5$3q4@1j5$3S2Q4x3X3c8S2L8r3I4Q4x3X3c8W2P5r3y4W2M7s2c8A6L8$3&6K6i4K6u0V1K9h3&6Q4x3X3c8$3K9i4y4#2j5h3I4Q4x3X3c8U0M7s2m8Q4x3V1j5`. 都说了在开一个进程,这么多异常不说能不能处理,万一前面的exptionf ...

网上说的google的breakpad,就是你说的进程外生成dump,结果还是这几个函数的组合而已,

现在是这些函数捕获不到,所在google的也没用。


78eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4N6W2K9i4S2A6L8W2)9#2k6U0x3@1x3o6x3J5y4K6V1J5i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5^5y4U0b7I4y4K6x3^5y4H3`.`.


最后于 2021-5-22 16:56 被sunbinjin编辑 ,原因:
2021-5-22 16:55
0
雪    币: 7717
活跃值: (4219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
sunbinjin 这个我在正式程序里也做了,能解决一些其它模块私自修改导致我主程序抓不住的情况 但对一个指针free 2次还是抓不住。
我测了一下确实是捕获不到,不过你可以试一下AddVectoredExceptionHandler函数。我测试了是可以捕获到重复free的问题的,成功生成了问题Dump
2021-5-22 19:37
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
30
MSGG05 我测了一下确实是捕获不到,不过你可以试一下AddVectoredExceptionHandler函数。我测试了是可以捕获到重复free的问题的,成功生成了问题Dump
AddVectoredExceptionHandler是可以捕获到,但是可能是它优先级太高,导致了整个程序其它地方的异常处理都被它拦截了,干扰了vc runtime的内部seh异常处理。
所以这个貌似不能用。
2021-5-23 12:17
0
雪    币: 7717
活跃值: (4219)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
sunbinjin AddVectoredExceptionHandler是可以捕获到,但是可能是它优先级太高,导致了整个程序其它地方的异常处理都被它拦截了,干扰了vc runtime的内部seh异常处理。 所以这个貌 ...

这个我倒是没试过,但是原则上来说微软不大可能让这些接口有这么大的副作用的。有时间的话还真的可以研究下这个,自身产生dump这个对程序后期排查难重现错误还是蛮有用的。

最后于 2021-5-23 20:20 被MSGG05编辑 ,原因:
2021-5-23 20:18
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
32
MSGG05 sunbinjin AddVectoredExceptionHandler是可以捕获到,但是可能是它优先级太高,导致了整个程序其它地方的异常处理都 ...
是的,这个确实非常有需求,现实情况就是微软貌似没考虑好。
包括google的源码也仅仅是用了SetUnhandledExceptionFilter
微软完全有能力处理所有异常并写出dmp文件,但是它就是不做。
我在网上找到了个写Error Report的注册表的,那个就是free 2次闪退它都能生成dmp,但是它不是程序控制的。
2021-5-24 10:36
0
游客
登录 | 注册 方可回帖
返回