鏈結時產生Map檔案作用和必要性

2021-06-18 10:11:18 字數 615 閱讀 7681

可以要求linker產生map檔案(例如gnu linker 『ld』的-m引數),雖然每套編譯工具產生map檔案格式可能都不一樣,但它的基本用途就是記錄專案中每乙個symbol之lma與vma的對應關係。這個map檔案很有用,我們可以從map檔案中得到下列資訊:

·程式各區段的定址是否正確

·程式各區段的size,即目前儲存器的使用量

·程式中各個symbol的位址

·各個symbol在儲存器中的順序關係(這在除錯時很有用)

·各個程式檔案的儲存用量

map檔案不是程式,所以不會有注釋在裡面

例如,資料超過ram的size,在測試時可能不會馬上出問題,只有在用到高位址的資料時才可能會壓到其他變數,只要系統不會馬上用到這個被破壞變數,那麼,當下也就不會感覺程式有問題,當發現系統有問題時,極有可能已經不在相關的功能上了,這對除錯會造成很大的困擾,一定要盡量預防。

至於檢查的方法很簡單,只要搜尋各個區段的起始和結束位址,以及你自己在link指令碼定義的變數,

確認其lma,vma和size都沒有問題就可以了。

webpack打包時去除map檔案

專案準備上線時,webpack打包時,生成的map檔案很大,map檔案功能如下,體積會變得臃腫 source map就是乙個資訊檔案,裡面儲存著位置資訊。也就是說,轉換後的 的每乙個位置,所對應的轉換前的位置。有了它,出錯的時候,除錯工具將直接顯示原始 而不是轉換後的 方法 修改sourcemap配...

(C ) 作用域和鏈結

作用域 描述了名稱在檔案 翻譯單元 的多大範圍內可見。例如 在function hello 中有個變數x,這個變數的作用域只在該函式範圍內有效。鏈結性為外部的可在檔案間共享,鏈結性為內部的名稱只能由乙個檔案中的函式共享。ps 自動變數的名稱沒有鏈結性,所以他們不能共享。變數的宣告週期的計算為 如果該...

編譯產生的中間檔案作用

pdb檔案除錯用,pdb記錄資料和除錯資訊 跟蹤原始碼,是一種除錯資料庫檔案,不需要放到伺服器上 一種 powerbuilder 動態庫,作為本地dll的乙個替代物。程式資料庫檔案,在建立工程時自動生成,其中存放程式的各種資訊,用來加快除錯過程的速度。記錄了程式有關的一些資料和除錯資訊。map檔案除...