能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
MSGG05
sunbinjin
AddVectoredExceptionHandler是可以捕获到,但是可能是它优先级太高,导致了整个程序其它地方的异常处理都 ...
是的,这个确实非常有需求,现实情况就是微软貌似没考虑好。 包括google的源码也仅仅是用了SetUnhandledExceptionFilter 微软完全有能力处理所有异常并写出dmp文件,但是它就是不做。 我在网上找到了个写Error Report的注册表的,那个就是free 2次闪退它都能生成dmp,但是它不是程序控制的。
|
能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
MSGG05
我测了一下确实是捕获不到,不过你可以试一下AddVectoredExceptionHandler函数。我测试了是可以捕获到重复free的问题的,成功生成了问题Dump
AddVectoredExceptionHandler是可以捕获到,但是可能是它优先级太高,导致了整个程序其它地方的异常处理都被它拦截了,干扰了vc runtime的内部seh异常处理。 所以这个貌似不能用。
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
MSGG05
这个好像还有一个是runtime在崩溃时会重新调用SetUnhandledExceptionFilter(NULL)之类的将异常处理函数强制重置成默认的,这样你设置的就失效了。很多做法是自己设置完把这 ...
这个我在正式程序里也做了,能解决一些其它模块私自修改导致我主程序抓不住的情况 但对一个指针free 2次还是抓不住。
|
能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
ninebell
@sunbinjin[img]https://attach.52pojie.cn/forum/202105/19/113942jvfe9vdva9oau9o5.png[/img][img]https: ...
你也是想知道他在哪退出的是吧? 我所知道的api,自杀式的是ExitProcess 它杀式的就是TerminateProcess,参数传自己 什么exit内部都会调用到ExitProcess
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
再开一个进程,只是处理生成dump的事。 但也得先捕获到异常吧?我现在是捕获不到啊。 我看到别的文章说google跨进程生成dump,但它也是本进程捕获到后才跨进行生成dump的啊。如果捕获不到,vcruntime直接给你退了,跨进程也不能生成dump啊? 另外我看下你的链接,里面多了几个函数,我试一下。 不知道是不是我们两的沟通不在同一个频道?
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
如何抓住程序在哪里退出的?想用于出错时生成Dump
sonyps
你这种估计是程序内存满了导致的异常,你此时再想写文件保存,可是写入操作也需要分配内存,进而导致了还没写成功就被系统提前终止运行了。
应该是某些runtime内部出错直接退出来,我是想如何抓住错误生成dump,我上面的代码示例就证明有些错误我现在没办法捕获。
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
[讨论]请教chia原理
superlover
硬盘相当于一块地,chia把地分给农民开垦,播种施肥过程当然很辛苦了,直到有一天长出了果实:郁金香。然后就可以拿去卖钱钱了。
有效的解决了荒地无人耕种的难题,实现了人类生产力爆发的意义。
这玩意P盘慢得跟鬼似得  要命
|
能力值:
( LV4,RANK:50 )
|
-
-
|
能力值:
( LV4,RANK:50 )
|
-
-
|