Linux/Windows 工具 + 生產力簡記

來源:互聯網
上載者:User

標籤:end   開啟   section   檔案格式   ace   header   shel   linu   版本   

以下只是開發中可能用的比較多的工具,另外還有其他很多未曾提及的工具 + 生產力。
Linux篇:

  1.連結過程的調試:主要用於查看構建過程;如連結時載入的動態庫以及運行時載入動態庫過程的調試
    支援LD_DEBUG環境變數(glibc下提供給載入器便於調試的一個環境變數);
    常用的使用方法:
      LD_DEBUG=help XXX XXX可為任一字元串,即可調出協助資訊;
      LD_DEBUG=libs xxx xxx為可執行二進位檔案,顯示所依賴庫的檔案路徑;
    此外還可以顯示重定位、符號表、依賴庫版本匹配資訊等;
    對於LD_DEBUG環境變數,可以在調用連結器命令時使用,也可以在當前終端的shell下設定環境變數如export LD_DEBUG=option;或者是在系統的環境變數下設定(不建議採用)。
  2. 二進位檔案類型
    1)file程式查看,如:file XXX;
    2)readelf分析ELF頭資訊,如:readelf -h XXX ;其中類型:EXEC DYN REL 分別為可執行檔、共用目標檔案、可重定位檔案(如.a/.o檔案);
    3)objdump分析ELF頭資訊,同readelf類似,其中類型:EXEC_P DYNAMIC 分別為可執行檔、共用目標檔案,對於目標檔案沒有顯示類型資訊。
  3. 二進位檔案進入點
    1)可執行檔的進入點
      readelf -h XXX
      或objdump -f XXX 。
    2)動態庫的進入點
      對於靜態載入的動態庫,一般可通過gdb調試,打斷點進而確定載入的動態庫進入點具體位置;
      對於動態載入的動態庫,則只能在方法中將大量螢幕輸出重新導向進行查詢。
  4. 查看匯出符號列表資訊
    1) nm 程式
    2) readelf程式
    3) objdump程式
    具體的查詢選項可查看各工具程式-help或--help選項。
  5. 查看符號節、段的資訊
    1) readelf程式
    2) objdump程式
    具體的查詢選項可查看各工具程式-help或--help選項。
  6. 反組譯碼
    1) 反組譯碼二進位:objdump -d/-D選項。
    2) 反組譯碼啟動並執行進程:gdb調試器
  7. 查看可執行檔或者共用庫載入時依賴的共用列表
    1) ldd程式可查看完整依賴列表(含直接依賴庫以及依賴庫的依賴庫(或者更多間接依賴庫))
    2) objdump -p或readelf -d的動態節資訊
  8. 查看裝載器可找到的有效庫檔案:ldd -p
  9. 查看運行時載入的動態庫連結檔案:
    1) strace程式 跟蹤系統調用,如:strace -f -e open cat,即查看cat程式的open系統調用;
    2) LD_DEBUG環境變數,如LD_DEBUG=files選項,如:LD_DEBUG=files gdb -q XXX;通過gdb調試打斷點以使得程式XXX執行中暫停,此時可以顯示攜帶的資訊,

      另外也可以在以進程PID下的/proc/PID/maps檔案中,可查看被記錄載入的動態庫檔案;
    3) lsof程式,可查看靜態或者動態載入的動態庫,此外其還可以查看普通檔案、通訊端、庫檔案、裝置檔案等開啟的情況。
  10. 靜態庫建立和其他動作:ar歸檔工具,可實現目標檔案打包成靜態庫,另外還有添加、替換、刪除、提取、調整順序等操作

Windows篇:
  1. 庫管理器lib.exe
    類似於Linux的ar歸檔工具,此外還可以建立動態庫引入庫檔案以及解析循環相依性的exp匯出庫檔案;
    1) 建立靜態庫檔案: lib.exe /OUT:XXX.lib /NOLOGO x.obj y.obj z.obj ...等
    2) 此外列出、刪除、提取操作分別以/LIST /REMOVE /EXTRACT,追加操作lib.exe XXX.lib abc.obj
    3) 建立動態庫匯入庫(引入庫),如通過def模組定義檔案建立引入庫lib:lib.exe /machine:x64 /def:XXX.def /out:XXX.lib
    4) 事實上除了lib可以建立動態庫引入庫外,還可以直接通到dll檔案來匯出,如 dumpbin /exports XXX.dll > XXX.def
  2. PE/COFF檔案格式資訊查看工具dumpbin.exe
    類似於Linux的objdump工具,其可查看匯出符合、節資訊、反組譯碼資訊以及可查看靜態庫中的目標檔案等,具體使用可查看各個選項,
    如:/EXPORTS 查看匯出函數 /IMPORTS 查看載入時依賴項,依賴庫和符號列表 /HEADERS 查看節資訊 /SECTION查看特定節資訊 /DISASM查看反組譯碼資訊。
  3. PE模組依賴分析工具Dependency walker(depends.exe)
    類似於Linux的ldd工具,可查看庫或應用程式依賴關係以及匯入、匯出函數等,部分應用程式運行異常,可通過此工具查看缺少的依賴庫;
    有時候該工具都找到並添加相應依賴庫後仍然運行異常,則可結合sxstrace,查看是否缺少或是不匹配的資訊清單檔,或者是其他錯誤提示資訊。

 

Linux/Windows 工具 + 生產力簡記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.