gdb調試行號錯位
阿新 • • 發佈:2017-08-26
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調試行號錯位