這是我的問題。我有用C#編寫的.exe文件。我無法訪問原始源代碼或pdb文件。如何在語句級別獲得C#應用程序的執行跟蹤?
我想要獲取語句級別的方法內執行的內容的跟蹤。我知道C#源代碼轉換爲CIL並在運行時進一步編譯。
我發現.NET分析器提供由方法,返回值和參數值組成的執行跟蹤。我發現的一些工具是:dotTrace,redgate ANTS,telerik justTrace,Runtime Flow。
我想獲得每條語句等價的CIL命令的跟蹤。 我知道可以進一步編譯器優化,可以修改CIL代碼或不同類型的編譯託管代碼(short info)。
一種自動添加日誌記錄的方法是PostSharp,但對我的情況再次提供了一個太高級的視圖。
據我所知,CLRProfiler爲方法入口和出口點等提供了API方法。沒有API來跟蹤執行的語句。
我到目前爲止的想法是在CIL級別手動編寫代碼注入器,如此處所述(part-1和part-2),其中每個語句都將打印等效的CIL代碼。
有沒有人有更好的主意或意識到任何類似的工具? 對於二進制程序集,Intel Pin可以提供類似的功能。
更新
我不想簡單地閱讀源代碼,我希望看到的是執行了什麼。 我很清楚所有反編譯器。 我在混淆和反混淆的背景下這樣做。例如,如果我有一個計算fibonnacci數字的方法,並且它應用了控制流模糊處理和其他混淆方法,則僅僅閱讀源代碼是不夠的。我想看看如何執行該方法。我需要動態追蹤。
爲什麼不使用反編譯器? – Nasreddine
這個帖子後面的東西看起來很麻煩 –
@Nasreddine請閱讀更新後的問題。感謝您的詢問 –