能力值:
( LV4,RANK:45 )
2 楼
建立一个新的进程监视,MSDN本来就不推荐自己的程序里MiniWriteDump
能力值:
( LV4,RANK:50 )
3 楼
ookkaa
建立一个新的进程监视,MSDN本来就不推荐自己的程序里MiniWriteDump
抓不住的情况下,另一个进程就能抓住了吗?这块没区别吧?
能力值:
( LV3,RANK:20 )
4 楼
以调试方式启动程序不行?奔溃直接断点分析
能力值:
( LV4,RANK:40 )
5 楼
你这种估计是程序内存满了导致的异常,你此时再想写文件保存,可是写入操作也需要分配内存,进而导致了还没写成功就被系统提前终止运行了。
能力值:
( LV4,RANK:50 )
6 楼
10ngvv
以调试方式启动程序不行?奔溃直接断点分析
生成dump是为了在别的机器上抓回来分析,调试不可行的。
有可能是在客户机器上。
能力值:
( LV4,RANK:50 )
7 楼
sonyps
你这种估计是程序内存满了导致的异常,你此时再想写文件保存,可是写入操作也需要分配内存,进而导致了还没写成功就被系统提前终止运行了。
应该是某些runtime内部出错直接退出来,我是想如何抓住错误生成dump,我上面的代码示例就证明有些错误我现在没办法捕获。
能力值:
( LV4,RANK:45 )
8 楼
MiniDumpWriteDump should be called from a separate process if at all possible, rather than from within the target process being dumped. This is especially true when the target process is already not stable. For example, if it just crashed. A loader deadlock is one of many potential side effects of calling MiniDumpWriteDump from within the target process.
能力值:
( LV4,RANK:45 )
9 楼
你的谷歌浏览器就有GoogleCrashHandler.exe
能力值:
( LV4,RANK:50 )
10 楼
ookkaa
你的谷歌浏览器就有GoogleCrashHandler.exe
我现在的问题不是生成不了dump,而是捕获不到异常
能力值:
( LV4,RANK:45 )
11 楼
https://gclxry.com/article/catch-all-exceptions-in-visual-cpp/ 都说了在开一个进程,这么多异常不说能不能处理,万一前面的exptionfilter都给你处理了,还怎么writedump
能力值:
( LV4,RANK:40 )
12 楼
sunbinjin
应该是某些runtime内部出错直接退出来,我是想如何抓住错误生成dump,我上面的代码示例就证明有些错误我现在没办法捕获。
最后一句改成
int i=0;
exit(100/i); 就可以捕获了。
能力值:
( LV4,RANK:50 )
13 楼
sonyps
最后一句改成 int i=0;
exit(100/i);就可以捕获了。
你这是另一种异常,异常类型太多,我上面示例代码里的如何让它捕获到呢?
能力值:
( LV4,RANK:50 )
14 楼
再开一个进程,只是处理生成dump的事。 但也得先捕获到异常吧?我现在是捕获不到啊。 我看到别的文章说google跨进程生成dump,但它也是本进程捕获到后才跨进行生成dump的啊。如果捕获不到,vcruntime直接给你退了,跨进程也不能生成dump啊? 另外我看下你的链接,里面多了几个函数,我试一下。 不知道是不是我们两的沟通不在同一个频道?
能力值:
( LV4,RANK:40 )
15 楼
不是不能捕获是你的代码被优化编译了吧,因为调试版就能捕获到。
能力值:
( LV3,RANK:20 )
16 楼
@sunbinjin [img]https://attach.52pojie.cn/forum/202105/19/113942jvfe9vdva9oau9o5.png[/img]
[img]https://attach.52pojie.cn/forum/202105/19/114220wxy1d9901b23fd5g.png[/img]
这是一个delphi的demo组件 效果还是不错的,目录+表格展示 但是有个闪退的坑儿。 试过OllyDbg 批量下断(退出进程等一系列api 函数) 以及api monitor 还有x32dbg都没有找到关键位置 查看了一下调用堆栈 和调试跟踪 经常异常了 也查看过SEH窗口下断,断不到。 下面的地方很可疑,并在第3+次数点击时能断到,不久就会触发闪退。 这个没有搞明白,还希望楼主指点下究竟。
最后于 2021-5-21 08:56
被ninebell编辑
,原因:
能力值:
( LV4,RANK:50 )
17 楼
sonyps
不是不能捕获是你的代码被优化编译了吧,因为调试版就能捕获到。
release没有优化掉,程序会出错,导致后面的代码Messagebox没有被执行。
debug是会被vs捕获到,不知道vs是如何做到的,vs的开发人员肯定这方面都知道如何处理。
能力值:
( LV4,RANK:50 )
18 楼
ninebell
@sunbinjin[img]https://attach.52pojie.cn/forum/202105/19/113942jvfe9vdva9oau9o5.png[/img][img]https: ...
你也是想知道他在哪退出的是吧?
我所知道的api,自杀式的是ExitProcess
它杀式的就是TerminateProcess,参数传自己
什么exit内部都会调用到ExitProcess
能力值:
( LV3,RANK:20 )
19 楼
能力值:
( LV11,RANK:185 )
20 楼
windbg可行?
能力值:
( LV2,RANK:10 )
21 楼
这个好像还有一个是runtime在崩溃时会重新调用SetUnhandledExceptionFilter(NULL)之类的将异常处理函数强制重置成默认的,这样你设置的就失效了。很多做法是自己设置完把这个接口给hook了不让runtime恢复。
能力值:
( LV4,RANK:50 )
22 楼
MSGG05
这个好像还有一个是runtime在崩溃时会重新调用SetUnhandledExceptionFilter(NULL)之类的将异常处理函数强制重置成默认的,这样你设置的就失效了。很多做法是自己设置完把这 ...
这个我在正式程序里也做了,能解决一些其它模块私自修改导致我主程序抓不住的情况
但对一个指针free 2次还是抓不住。
能力值:
( LV4,RANK:50 )
23 楼
MTRush
windbg可行?
不是研发自己抓,而是程序抓了生成dump发回来研发再分析。
能力值:
( LV4,RANK:50 )
24 楼
ninebell
sunbinjin
你也是想知道他在哪退出的是吧?
我所知道的api,自杀式的是ExitProcess
它杀式的就是TerminateProc ...
我的问题都没搞定的话,貌似也没办法解释你的程序是哪种退出机制。
能力值:
( LV4,RANK:50 )
25 楼
ninebell
sunbinjin
你也是想知道他在哪退出的是吧?
我所知道的api,自杀式的是ExitProcess
它杀式的就是TerminateProc ...
程序自己都检测到堆栈溢出了,应该是字符串复制过界了。