1. 程式人生 > >gdb調試行號錯位

gdb調試行號錯位

clu amp 判斷 這樣的 混亂 處理 target bsp ngx

http://blog.csdn.net/wangxmin2005/article/details/8128192

gdb調試過程中出現行號錯位的情況,原因一般有兩個:

1. 編譯器的優化可能把某些語句給優化掉了。

  解決這種情況很簡單,makefile中-O2這類的編譯優化去掉,換成最簡單的g++ -g $^ -o [email protected] $(INCLUDES) $(LIBS)

2.文件格式轉換問題。dos格式文件傳輸到unix系統時,會在每行的結尾多一個^M,造成文件格式混亂,換行錯誤,由此導致gdb調試中行號錯誤。

  dos,unix格式處理的差別:DOS是回車+換行,而在UNIX下,只有回車,無換行!

用腳本來判斷文件是哪種格式:

file filname|grep -qv ^M && echo file is unix formart || echo file is dos formart

其他方式判斷文件格式:vim打開

技術分享

這種有[dos]的為dos文件格式

技術分享

這種即unix文件格式

解決方式

   vim  dos.txt        
   :set fileformat=unix
    :w 

這樣文件就轉換成unix格式文件了, 一般在windows機器上編寫好了文件傳到unix下就可能會出現這樣的情況.
  用命令:set ff?
  可以看到dos或unix的字樣.
  用:set ff=unix把它強制為unix格式
  也可以用sed 這樣的工具來做:
  sed ‘s/^M//‘ filename > tmp_filename
  其中^M是同時Ctrl+V+M按出來的,表示回車。

最簡單的方式:dos2unix filename

gdb調試行號錯位