日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++(3)--编译、gdb调试

發布時間:2023/12/13 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++(3)--编译、gdb调试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3--編譯和執行過程

  • 1.編譯
  • 2.gdb調試

GCC是一個編譯套件,是一個以"gcc"命令為首的源碼施工隊。施工隊的成員有gcc、cpp、as、ld四個成員

  • 預處理–宏定義展開,頭文件引入-- cpp 等價于 gcc -E
  • 編譯–C語言->匯編語言–gcc -S
  • 匯編–匯編語言->機器語言–gcc -c
  • 鏈接–鏈接相關的.o文件–ld
  • -o 指定輸出文件的名字

    1.編譯

    (win操縱系統,老九課堂筆記)
    1.預處理–將頭文件(.h)的具體內容展開至源文件中;刪除注釋;添加行號和文件標識等;預處理完產生一個.ii文件(c語言編譯將產生一個.i文件)

    cpp demo.cpp > demo.ii

    cpp 為 C Preprocessor的縮寫, >表示輸出到文件
    還有另外兩種命令也可以用于產生.ii 文件,其中-o參數用于指定輸出文件命

    g++ -o demo.ii -E demo.cpp
    g++ -o demo.ii demo.cpp

    2.編譯–對.ii文件進行詞法/語法/語義分析,生成相應的匯編文件,.s文件

    g++ -o demo.s -S demo.ii

    3.匯編–將匯編文件轉換成二進制目標文件.o .obj結尾

    as -o demo.o demo.s

    g++同樣可以實現

    g++ -o demo.o demo.s

    4.連接–將目標文件和C++庫函數連接,將涉及到的庫代碼合并到目標代碼中;

    g++ -o demo.exe demo.o

    生成demo.exe可執行文件

    (mac+vscode)
    在vscode 終端上輸入

    g++ main.cpp -o main
    "/Users/chenyingying/CppProject/Helloworld/"main

    即可運行,(猜測)第一條語句是不是包括了預處理,編譯,匯編,連接于一體,生成mac/linux下可執行文件main.out文件。輸入目錄運行對應的可執行文件。

    2.gdb調試

    GNU debugger–Richard Stallman設計的
    要想通過gdb調試,必須在編譯時加上調試接口,即-g

    gcc -g ./rubbish.c input.c readfile.c -o rubbish19_debug
    gdb ./rubbish19_debug

    GDB 的一些常用指令:

  • run/r–進入調試狀態后,運行代碼
  • break/b–設置斷點break 12 # 在源碼12行設置斷點
  • list/l–顯示源代碼
  • continue/c–繼續執行直至下一個端點或者結束
  • print/p–打印變量的值
  • examine/x–查看指定內存地址中的數據,(只能查看當前被調試程序能夠非法訪問的地址)
  • next/n–單步執行命令。
  • MAC上使用gdb(完美解決)

    (證書沒有添加成功,sudo應該可以跑)

    總結

    以上是生活随笔為你收集整理的C++(3)--编译、gdb调试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。