解決gdb調試時行號錯位--檔案格式轉換

來源:互聯網
上載者:User
 話首語:設計模式感悟,如果把自己成功做成某件事情的過程,回憶並加以總結,形成了經驗,這就是積累。

  dos格式檔案傳輸到unix系統時,會在每行的結尾多一個^M,當然也有可能看不到,但是在vi的時候,會在下面顯示此檔案的格式,比如 "dos.txt" [dos] 120L, 2532C 字樣,表示是一個[dos]格式檔案,如果是MAC系統的,會顯示[MAC], 正常顯示則是80L, 2391C ,無[], 因為檔案格式的原因有時會導致我們的unix程式,或者shell程式出現錯誤,那麼需要把這些dos檔案格式轉換成unix格式,方法是:

     vi  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按出來的,表示斷行符號。

一)若linux系統中檔案換行處出現^M

 先用vi開啟檔案,看看是哪種檔案格式: :set ff, 然後將其與對應的檔案進行轉換,如是dos則轉換為unix;

二)若window系統檔案換行處出現?

 先用ultraEdit開啟檔案,查看是哪種檔案格式,如果是unix,則調用菜單中相應選項,將unix轉換為dos,則顯示正常。

三)關於檔案格式

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

用指令碼來判斷是哪種檔案格式:

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

四)經驗總結:

 凡是行尾出現類似^M,?的亂碼都是由檔案格式不對引起的,用cvs checkout下的檔案格式在Window系統下是dos格式,在unix系統下是unix格式,(CVS預設會根據平台差異自動轉換檔格式)由此類推,在Mac系統應該是mac格式,因此用ftp遠程傳輸工具在幾種作業系統下要注意檔案格式的差異,要求用cvs來管理源碼時,不允許用ftp來傳輸源碼檔案,一來ftp不加密檔案,不安全;二來會造成檔案格式的混亂,導致換行錯誤,由此導致gdb調試中行號錯誤。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.