首次使用Windbg调试dNet程序
dNet程序反編譯后是IL匯編,是虛擬機匯編語言;是不能直接用WinDBG調試的;模糊記得,windbg需要加載名為SOS的擴展,才能調試dNet程序;下面來試一下;
windbg設置好符號路徑;
VS做一個簡單C#程序,跑起來,然后在任務管理器中抓一個該程序到dump文件;
?
,.dmp文件;
?
打開dump文件;
?
windbg執行?.cordll -u -ve -l,按資料這是加載SOS擴展;如下圖應是加載成功,
?
然后運行 !threads 命令,查看托管線程;
?
? ? 提示錯誤;SOS不支持當前目標架構;出錯了;但此錯誤可以確認SOS工作了;?
修改C#程序屬性,改為如下,
?
?
生成后重新抓一個dump;再試;還是一樣錯誤;
查一下資料,
SOS does not support the current target architecture解決方法
客戶提交一個dump文件,WinDbg加載時出現大量WARNING,加載對應版本的SOS后執行相應命令提示"SOS does not support the current target architecture"。
原因在于使用了64位的任務管理器導出了32位進程的dump文件,下面是兩個解決方法:
1、使用32位任務管理器,運行:C:\Windows\SysWOW64\taskmgr.exe。
2、使用其它轉儲工具,比如:ProcessExplorer。
重新把C#程序生成為如下目標平臺;再抓一個dump;再試;
?
看上去我到工具好像出了問題;下回再整;
?
?
總結
以上是生活随笔為你收集整理的首次使用Windbg调试dNet程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 内核 printk 使用
- 下一篇: Bochs调试Linux内核5 - 启动