<6>使用檔案core 除錯(程式奔潰可以用,不包括邏輯錯誤)
開啟 core ulimit -c size
定義core檔案大小 ulimit -c size
顯示所有的檔案大小 ulimit -a
只顯示core檔案大小 ulimit -c
<7>編譯鏈結
將所寫原始檔經過一系列的過程最終變成可執行程式
1、預編譯
gcc -e
main.c /*-o main.i*/
主要工作:1. 刪除所有的「#define」並文字替換
處理所有的條件預編譯指令#if #endif #elif
遞迴展開「#include」,將包含的檔案插入到該預編譯指令的位置
刪除注釋
新增行符號和檔案標識
保留#pragma(交給編譯器處理)
2、編譯
gcc-s
main.i /*-o main.s*/
主要工作:1. 詞法分析
語法分析
語義分析
**優化
生成彙編指令
3、彙編
gcc-c
main.s /*-o main.o*/
主要工作:將指令**翻譯彙編成可重定位的二進位制檔案(生成各個section,生成符號表)
4、鏈結
gcc-o
main main.o 或 gcc -o main main.c
主要工作:1.合併段和符號表(將函式和變數統稱為符號)
符號解析(把目標檔案中的符號和引用聯絡起來)
分配位址和空間
符號重定位(把符號定義和記憶體位址對於起來,然後修改所以對符號的引用)
將預編譯、編譯、彙編過程合併到一塊執行 gcc -c main.c,再鏈結 gcc -o main main.c
可直接通過原始檔生成可執行檔案 gcc -o main main.c
linux除錯core檔案
core dump test.c 1 include 2 3 const char str test 45 void core test 6 9 10 int main 11 以上為除錯 編譯完成以後 當前目錄ls 已經找到了core 檔案 root localhost gongmh ls bate...
core檔案除錯
在程式不尋常退出時,核心會在當前工作目錄下生成乙個core檔案 是乙個記憶體映像,同時加上除錯資訊 使用gdb來檢視core檔案,可以指示出導致程式出錯的 所在檔案和行數。1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能,...
Linux下core檔案除錯方法
在程式不尋常退出時,核心會在當前工作目錄下生成乙個core檔案 是乙個記憶體映像,同時加上除錯資訊 使用gdb來檢視core檔案,可以指示出導致程式出錯的 所在檔案和行數。1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能,...