我試圖通過JNI和WinDBG在基於Java的服務進程中運行的C++組件中調試訪問衝突錯誤。 有我目前面臨兩個問題:在JNI模塊中調試特定的訪問衝突
- Java本身使用了第一次機會訪問衝突異常做一些內部的線程同步化(至少這是怎麼好像),所以我不能只在所有一線突破機會訪問衝突(根據Java的漏洞數據庫,這是預期的行爲,所以我們不應該指望任何修復)
- 異常外碼的處理(即應該保護生產環境免受C++代碼行爲不端)
目前我看到了一種區分Java的AV和我的方式 - Java是偶然的在屬於沒有加載任何符號的模塊或存儲器的任何其他位置的地址處,並且我有興趣捕獲在具有符號加載的地方發生的AV。
好像我對如何使用WinDbg來實現它的所有元素,但不能聚集在一起他們:
sxe -c ".if (ln) {gN}" av
問題是我不能。如果語句中指定ln命令的輸入(因爲它期望表達式),並且我不確定如何檢查ln的輸出是否爲空。