请教如何在没有PDB文件的情况下,打印调用堆栈

时间:2022-05-04 20:16:12
请教如何在没有PDB文件的情况下,打印调用堆栈

因为程序需要经常改动和编译,而一旦程序重新编译之后,普通的打印堆栈的方法(minidump,StackWalker,CrashRpt等)都无法找到符号,从而失效.
例如程序员这边会经常改动代码并编译, 测试人员会不定期拉下新版本测试,这样测试人员那边的版本跟程序员的版本很可能是不一致的,从而导致dmp文件无法分析.而发布pdb文件到测试人员或者用户那里又是不现实的.
有没有办法让程序直接能在崩溃的时候导出堆栈信息, 而不需要发布pdb文件呢?

6 个解决方案

#1


pdb文件用不着给到测试人员或者用户,放在你分析dmp的机器就好了。用户只要把minidump的文件发回来,你分析就好了。

#2


要是放在我的机器上, 那我就需要保留n个版本的pdb文件了, 例如我每天要发布3个版本, 那么一个月下来, 我机器上就需要保留90个pdb, 而且这个pdb的版本很难维护, 用户发回dump, 我都不知道对应的哪个pdb文件, 而且可能会忘了保留pdb备份之类, 很难维护

#3


引用 2 楼 devil_li 的回复:
要是放在我的机器上, 那我就需要保留n个版本的pdb文件了, 例如我每天要发布3个版本, 那么一个月下来, 我机器上就需要保留90个pdb, 而且这个pdb的版本很难维护, 用户发回dump, 我都不知道对应的哪个pdb文件, 而且可能会忘了保留pdb备份之类, 很难维护

这个没办法,所以你发布的版本的PDB就需要有对应的,如果你这么多版本,那么pdb可以以版本的build number做目录存放pdb文件

#4


难道就没有更好的办法来解决么? 期待高手, 呵呵.....

#5


引用 4 楼 devil_li 的回复:
难道就没有更好的办法来解决么? 期待高手, 呵呵.....
确是没有的,要分析调用堆栈,就得靠pdb和dmp

#6


Windows Debugging tools 不是有管理 pdb 的工具嗎?

這樣就可以讓不同版本的 symbol 共存而又讓分析工具找到了.

看看 symstore !

#1


pdb文件用不着给到测试人员或者用户,放在你分析dmp的机器就好了。用户只要把minidump的文件发回来,你分析就好了。

#2


要是放在我的机器上, 那我就需要保留n个版本的pdb文件了, 例如我每天要发布3个版本, 那么一个月下来, 我机器上就需要保留90个pdb, 而且这个pdb的版本很难维护, 用户发回dump, 我都不知道对应的哪个pdb文件, 而且可能会忘了保留pdb备份之类, 很难维护

#3


引用 2 楼 devil_li 的回复:
要是放在我的机器上, 那我就需要保留n个版本的pdb文件了, 例如我每天要发布3个版本, 那么一个月下来, 我机器上就需要保留90个pdb, 而且这个pdb的版本很难维护, 用户发回dump, 我都不知道对应的哪个pdb文件, 而且可能会忘了保留pdb备份之类, 很难维护

这个没办法,所以你发布的版本的PDB就需要有对应的,如果你这么多版本,那么pdb可以以版本的build number做目录存放pdb文件

#4


难道就没有更好的办法来解决么? 期待高手, 呵呵.....

#5


引用 4 楼 devil_li 的回复:
难道就没有更好的办法来解决么? 期待高手, 呵呵.....
确是没有的,要分析调用堆栈,就得靠pdb和dmp

#6


Windows Debugging tools 不是有管理 pdb 的工具嗎?

這樣就可以讓不同版本的 symbol 共存而又讓分析工具找到了.

看看 symstore !