閱讀158 返回首頁    go 阿裏雲 go 技術社區[雲棲]


DW翻譯係列:父類導入函數列表

文章網址:https://www.dependencywalker.com/help/html/hidr_import_list_view.htm


父類導入函數列表顯示了在模塊依賴樹型圖中所選中的模塊的父類導入函數的列表。父類導入函數就是指那些在當前模塊中被調用的父模塊的函數。


對於隱式和前向依賴,被選模塊需要導出其父模塊要從中導入的每一個函數。如果被選模塊沒有導出父模塊要調用的函數,則當模塊嚐試加載時,一個未能解析的外部錯誤就會發生。參考導出函數列表可查看被選模塊的導出函數。


DW為每一個父類導入函數搜索導出函數列表以匹配。如果有函數不能解析,此函數就會被標注錯誤圖標,這個模塊也會在樹型圖和模塊列表圖中被標注錯誤圖標。


父類導入函數列表也可幫助你定位程序中的不必要的模塊。父模塊調用當前模塊的函數就會使得當前模塊成為了父模塊的依賴。作為開發者,如果能安全地防止父模塊調用一個給定模塊中的父類導入函數的話,那麼這個模塊就不再是父模塊的依賴了。


C++函數的顯示有兩種方式:名稱修飾格式和易讀的非名稱修飾格式。(後麵的一些話沒太大意義,就不譯了)


下麵主要是父類導入列表中每一個函數旁邊的圖標類型:

     被解析的C導入


    被解析的C++導入。有兩種方式可以查看,在View菜單下


     被解析的按序導入


   被解析的動態C導入(和在C++和序函數中的圖標是相似的)這類模塊的父模塊調用GetProcAddress函數去動態地獲取這個函數的地址。這不一定意味著父模塊實際使用了這個地址去調用此函數


     不能解析的C函數(和在C++和序函數中的圖標是相似的)這個函數被父模塊所調用,但沒有被當前模塊所導出。這種情況常被稱為“不能解析的外部函數”。如果這個模塊是一個隱式和前向依賴,則父模塊不能被加載;如果此模塊是一個延遲加載依賴,則父模塊很有可能從丟失的依賴中恢複,這是使用延遲依賴的一個特性。


    不能解析的動態C函數(和在C++和序函數中的圖標是相似的)這個模塊的父模塊調用GetProcAddress函數去動態獲取這個函數地址,但當前模塊並未導出此函數。這通常不是一個錯誤,因為模塊調用GetProcAddress可能就是想測試一個函數是否存在於一個模塊。


父類導入函數列表由五列組成:




函數列表可在任意一列進行排序。隻需單擊你想排序的那一列的頭部即可,此時頭部就會有“^”的字樣。


最後更新:2017-04-03 12:55:07

  上一篇:go openstack 命令行管理三 - tenant 管理 (備忘)
  下一篇:go 錯誤解決:[A potentially dangerous Request.Form value was detected from the client]