GCC和GDB

一、GCClinux

  linux下,gcc 是指gcc c編譯器。咱們從一個程序到一個可執行文件來講明gcc的幾個選項:數組

  若是你寫的代碼是hello.c,你的程序將經歷下面的步驟到達硬盤或者內存成爲可執行文件。ide

gcc -E main.c -o main.i //第一步:hello.c(文本)通過預編譯生成hello.i(文本)函數

gcc -S main.i -o main.S //第二步:hello.i(文本)通過編譯器生成hello.s(彙編。文本)spa

gcc -c main.c -o main.o //第三步:hello.s(文本)通過彙編器生成hello.o(二進制)。調試

gcc main.o -o main    //第四步:hello.o(二進制)通過連接器生成hello可執行文件。orm

wKiom1noBM2hp6S6AACH8TfOt6I961.png

通常狀況下用gcc main.c -o main 就能夠直接生成可執行文件main。blog

二、gdb(一些基本的調試命令)內存

須要調試的程序在編譯的時候要加 -g 選項,程序才能進行調試
get

wKiom1noBwiiWOxaAADzyX-Rm7k841.png

list 顯示源文件:

          list 沒有參數,顯示當前行以後或周圍的10多行

          list start,end  顯示從行號start到end之間的代碼行。

wKiom1noCd7DSgt0AABTaqHGwAQ473.png

print 查看運行時的數據

    print i    顯示當前變量i的值

    print &i   顯示變量i的存放地址

    print array@1   顯示從array(數組名)開始的5個值

    print array[2]@3  顯示從array第二個元素開始的3個數組元素的值

    whatis i       顯示變量i的數據類型

設置斷點 break

   break linenum    在當前文件指定行linenum處設置斷點

    break function   在當前文件函數function的入口處設置斷點

顯示斷點 info  info breakpoints/break/watchpoints  [num]

單步跟蹤 step [N]  若是遇到函數調用,而且該函數編譯時有調試信息,則會進入該函數內執行。

       next [N]  遇到函數調用時,執行整個函數。

連續執行continue 從當前行開始,連續執行到下一個斷點處,或者到達該程序結束。命令中能夠給出一個數字N,忽略其後N-1次斷點。

運行程序 run。

clear(清除全部已定義的斷點),delete(刪除全部斷點,後面可給出斷點號碼,多個斷點用空格分開)

3c2c56c4b7616619b505d3ebc7cc909c.png

6857b05b227a7a81f1350532880fa0e2.png

  最後,補充一句上面的函數均可以用首字母簡寫

相關文章
相關標籤/搜索