我的代碼有時會運行爲「純函數調用」錯誤,所以我使用_set_purecall_handler來註冊處理程序。在調試模式下,我可以使用StackWalker獲取完整的調用堆棧,但在發佈模式下,StackWalker只顯示很少有用的信息。我嘗試使用MiniDumpWriteDump並設置ExceptionPointers = NULL。崩潰後,我得到一個轉儲文件,但vs無法調試它並顯示: 指定的模板找不到。請檢查完整路徑是否正確。
無論如何從這種情況下獲得釋放的應用程序的信息?如何在使用_set_purecall_handler時發佈應用程序中的callstack
0
A
回答
0
通常,可以通過將子類的vtable與抽象類的vtable進行匹配來猜測所調用的方法 - 抽象類的vtable對於沒有實現的虛擬函數具有一堆pure_call處理程序。
關於方法調用需要知道的一切都在堆棧和寄存器中 - 只需查看調用站點的反彙編,記下用於從vtable檢索函數的偏移量,轉儲已故對象的實際vtable - 你可以通過反彙編查找`vftable's的構造函數的代碼來查找它。然後用DDS一個簡單的檢查應該給你需要知道哪些方法被調用(但不是對象爲何消失了:O)的所有信息
相關問題
- 1. 在發佈版本中使用MagicalRecord時,應用程序崩潰
- 2. 應用程序在發佈時退出
- 3. 如何使用應用程序的所有配置發佈Web應用程序?
- 4. 應用程序在應用商店發佈時發生崩潰
- 5. 如何在取消發佈後重新發布應用程序?
- 6. 如何在Java應用程序的連續發佈過程中使用Flyway?
- 7. 如何發佈Web應用程序
- 8. 如何發佈Windows Forms應用程序?
- 9. 如何發佈silverlight應用程序
- 10. 我如何發佈iOS應用程序?
- 11. 如何從appMobi發佈應用程序?
- 12. 如何發佈mvc3應用程序?
- 13. 如何發佈應用程序
- 14. 如何發佈應用程序名稱
- 15. Facebook應用程序:如何發佈wallpost
- 16. 如何發佈C#應用程序與
- 17. 如何發佈.net應用程序
- 18. 使用MSBuild發佈Azure應用程序
- 19. 使用MSBuild發佈ClickOnce應用程序
- 20. 使用webservice發佈Silverlight應用程序
- 21. 使用HockeyApp發佈應用程序
- 22. 使用Visual Studio發佈應用程序
- 23. 使用iCloud發佈應用程序
- 24. 如何在應用程序發佈時查找異常錯誤?
- 25. 如何在特定時間發佈應用程序?
- 26. 在Android Market中發佈應用程序
- 27. 如何使用預加載的coreData發佈應用程序?
- 28. 如何發佈使用Oracle.DataAccess的應用程序
- 29. 如何使用我的應用程序發佈TensorFlow?
- 30. 如何使用ClickOnce發佈帶有SQLite的Winforms應用程序
u能隨時提供調試信息 –
@ Cheersandhth. - 阿爾夫·我想獲得一些調試信息以及..有一些石灰做純功能調用,我想從崩潰的時候從callstack找到地方。 – magicyang
如果默認_purecall_handler顯示一個消息框,則不要調用_set_purecall_handler。相反,在顯示錯誤消息時將windbg附加到進程,配置符號,然後發出'〜* kb' windbg命令來獲取所有線程的調用堆棧。然後看看每個調用堆棧,直到看到一個調用某個MessageBox變體。 –