[英]How to check if the linux binary file has newly added code or not
我有一個由多個使用g ++編譯的*.cpp
文件組成的項目。 我更改了一個源文件以添加一些代碼。 再次建立該項目。 只是檢查我做了
diff -s origbinaryfile changedbinaryfile
它告訴我文件是相同的,這很奇怪,因為我添加了額外的代碼,並希望看到生成的linux二進制文件之間的差異。
我在現有的switch case
代碼中添加了一個額外的案例聲明代碼。例如,我之前有
switch(x) {
case DEV1:
...
case DEV2:
...
改一個是
switch(x) {
case DEV1:
...
case DEV2:
...
case DEV3:
DEV1
, DEV2
, DEV3
是一個enum聲明的枚舉。
如何使用nm
命令或其他任何命令驗證二進制文件中是否確實存在所添加的代碼?
還有其他方法嗎?
[聽起來可能很愚蠢,但是我仔細地做以確保在編譯時沒有出現任何錯誤]
你不能。
當然,您可以分解文件並比較asm代碼,但是編譯器對它進行了很大的優化,以至於您幾乎無法通過這種方法獲得任何有意義的結果。
或者,您可以使用cmp
命令比較文件,該命令適用於二進制文件,可能比diff
更合適。
但是,二進制差異並不是100%保證實際上已更改任何代碼。 編譯器通常會添加調試信息並編譯時間戳,因此同一代碼連續編譯兩次將導致兩個二進制文件具有不同的字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.