簡體   English   中英

在 VS2017 中搜索內存

[英]Search through memory in VS2017

我在 Visual Studio 2017 中打開了我的 C++ 應用程序的 minidump 文件。該轉儲是一個因訪問沖突而崩潰的程序。 我懷疑堆/堆棧損壞,所以我在內存/反匯編窗口中花費了大量時間,試圖解釋堆棧。

如果我可以在內存中搜索某個值(例如函數調用的返回地址),那將非常方便。 我知道 WinDbg 可以做到,但它目前沒有正確設置符號路徑,我寧願留在一個調試器中。

我發現這個鏈接說 Visual Studio 2010 支持在即時窗口中輸入類似.S -D 0x20B4EC L100 0x12EC9275的內容,但是當我在 VS2017 中嘗試時,我只是得到expected an expression

我錯過了什么嗎?

(注意,雖然我現在正在分析故障轉儲,但在調試實時程序時它似乎也不起作用)

澄清

  • 我有一個包含內存的小型轉儲
  • 常規分析工作正常:我有 pdb 文件,我可以看到線程、堆棧、手表,隨你怎么說。 只是我懷疑堆棧損壞,所以這些沒有多大意義。 (要么,要么優化器在惹我)
  • 因此,我打開了內存窗口(單擊 Debug->Windows->Memory->Memory 1)。 在那里,我可以看到(原始)內存。 現在,我想在該內存中搜索特定值。

這是一個很好的教程: https : //docs.microsoft.com/zh-cn/visualstudio/debugger/using-dump-files?view=vs-2019

基本上,要查看轉儲中的內存有一些硬性要求:

  • minidump必須與堆一起使用
  • 您必須為Visual Studio提供.exe及其.pdb

如果不滿足這些條件,則只會得到堆棧跟蹤,也許還會得到一些堆棧變量。

編輯:具有監視和變量的堆棧跟蹤是您要搜索相同的內存。 沒有實時調試。 這是崩潰的快照。

根據您發布的鏈接:“此選項僅對運行時模式下的 C++ 項目有效。”

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ms171363(v=vs.100)

它不適用於故障轉儲(我在搜索如何執行類似操作時發現了這一點)。 聽起來Windbg是唯一的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM