测试那边 win64 可执行文件,用的是公司的 win7 sp1。 跑了 7 天,第 8 天崩了。很难复现的错误。
崩了以后,只能用 vs2010 收尸,只能发现 stack frame 停止在:
[Frames below may be incorrect and/or missing, no symbols loaded for stereopc_demo.exe]
xxxx.exe!0000 0001 3f7b ba34()
xxxx.exe!0000 0001 3f7b 8df5()
kernel32.dll!0000 0000 7750 59cd()
ntdll.dll!0000 0000 7763 a561()
貌似是 ntdll 里的7763 a561
的内存地址
我的思路:
提前谢过
1
xenme 2018-01-30 08:47:04 +08:00 via iPhone
这个没法甩锅给 ntdll
或者 os |
2
TinySec 2018-01-30 08:55:45 +08:00 via iPhone
哈哈哈哈
|
3
linxy 2018-01-30 08:56:45 +08:00 1
no symbols loaded 是说没有调试符号,跟运行环境没啥关系。
按道理来说,如果加载了符号,ntdll 也会显示出调用函数的。 不过我不觉得是导出函数的锅。 崩的时候应该导出一份 dump 文件的,这样就不用再复现了。 |
4
TinySec 2018-01-30 08:57:36 +08:00 via iPhone 1
l 需要收集 dump 和.pdb 文件来辅助分析,你贴的信息太少,99.99%是你自己写的程序有 bug
|
5
zwh2698 2018-01-30 09:15:08 +08:00 via Android 1
编译成 release 带调试信息的版本或者 debug 版,使用 windbg 在应用 crash 时挂起
|
6
janxin 2018-01-30 09:31:42 +08:00 1
你有 dump 吗....仅这么一句只能掐指一算了
|
7
zn 2018-01-30 09:50:17 +08:00 1
99.999999999999999% 是你程序问题,别甩锅。
下次吧 pdb 文件放到 exe 旁边,崩了可以看到你自己程序的 stackframe |
8
lrxiao 2018-01-30 09:53:26 +08:00 1
甩锅是没得甩啊 就是没配置好 VS 的符号
没重启的话拿个 windbg 看下 u 7763 a561 是啥... |
9
enenaaa 2018-01-30 10:12:22 +08:00 1
下次把 pdb 带上。
另外可以看看 exe 里的 3f7b 8df5 3f7b ba34 是哪个函数 |
10
yejinmo 2018-01-30 10:20:06 +08:00
借楼问问。。有没有啥好的 Windows dump 文件分析文章
|
12
wizardforcel 2018-01-30 10:47:01 +08:00 via Android 1
这个地址只能找到 api。
还需要寄存器信息看看哪个参数传错了。 还需要最近几个帧的栈信息,看看你的程序空间的哪条指令调用了这个 api。 |
13
zwh2698 2018-01-30 11:02:31 +08:00 via Android 1
Windbg 就是最好的工具
|
14
ysc3839 2018-01-30 11:04:46 +08:00 via Android 1
no symbols loaded for stereopc_demo.exe
是因为你没加载 pdb 调试符号,先加载起来看看。 |
16
skylancer 2018-01-30 11:18:08 +08:00 1
为什么不保存好转储和准备好 pdb?
就凭这一句话只有神仙才能解决你的问题 |
17
zwh2698 2018-01-30 11:35:38 +08:00 via Android 1
有 map 文件就能知道这个地址在你的那个函数,然后将二进制拖到 Ida pro 中看类 c,然后分析,如果有 dump 加上 pdb 用 windbg 就是一句话就可以看到了
|
18
zwh2698 2018-01-30 11:40:41 +08:00 via Android
分析 windows 的程序 crash 不要怀疑操作系统,就是有错,一定也是你用错了,所以方向很重要,因为一般的应用很少能触发系统问题。
|
19
Athrob 2018-01-30 14:44:13 +08:00 via iPhone 1
有这个程序编译完时的 pdb 就很好找,没有 pdb 了就新编译一个然后用 ida 等反编译工具对比两个 exe,自己根据特征定位大致代码行。一般情况下不是大的修改,编译后的代码内容都是差不多的。
|
20
SmiteChow 2018-01-31 10:51:54 +08:00
可以试试,如果是和时间相关的话,可以修改系统时间
|