Object:GDB ,log file and codeblock 新增編譯器

From LEXWiKi

Jump to: navigation, search

GDB-GUN Project Debugging

是一個在LINUX的debug工具,只要以GUN官方的編譯器所產生的binary file,皆可使用此工具對此binary file進行程式碼的debug

   NOTE: 編譯程式時,需加入-g「含入除錯符號資訊」的參數,才能在使用GDB時顯示出binary內的原始碼。
除錯完畢後,可使用strip工具(strip [binary file name]),清除檔案內的雛錯資訊。

常用指令:

   File(f):開啟檔案
   Run(r):如同執行程式
   List(l):印出程式碼。但程式在編譯時需使用 –g 參數,否則指令無作用
   Break(b):設定中斷點
   Continue(c):繼續執行
   Condition:設定中斷條件
   Print(p):印出變數內容
   Disable:暫時關閉某個中斷點
   Enable: 開起被關閉的中斷點

Log file

會記錄時間、使用者、位置及發生事件,來儲存系統的運作訊息;因此可以藉由此資料訊息,來解析發生系統錯誤及安全問題的原因; 1.必須以root權限才能看到這些系統資訊。
2.系統運行時,記錄服務及應用程式的資訊是交由syslogd(rsyslog);而kernel的訊息則是由klog負責,兩者皆為開機時就會自動載入的 背景常駐程式。
Linux主要的Message log file(/var/log/):

   Secure:只要使用到需要輸入密碼的任何軟體,使用資訊都會被儲存在這裡
   Message:假使系統發生錯誤,或是其餘大部分系統的訊息都會產生在這個檔案裡面
   Maillog:郵件服務sendmail (提供SMTP 協定的服務) 與 dovecot (提供POP3 協定的服務)所產生的訊息
   Cron:紀錄crontab例行性(cron)工作排程的工作內容
   Wtmp:會紀錄所有登入系統的使用者資訊,因為此檔案經過加密,所以需用last指令來查詢
   Lastlog:記錄系統內所有帳號,最後一次登入的時間,和wtmp相同需使用指令查詢

如果看到是以*.log命名的log file,都是以此格式紀錄系統訊息: 事件運作時間+導致事件的位置(主機)+觸發事件的服務或程式名稱+內容

  Exampl:May 19 16:22:04 localhost NetworkManager: <info>  Activation (eth0) successful, device activated.
  事件運作時間=May 19 16:22:04
  事件的發生點=localhost(本地端)//假始非本地端則顯示IP
  觸發事件的服務或程式名稱=NetworkManager(服務)//如果是程式會附加PID

log file 存取指令

  dmesg:linux在開機時,會先獨立出一記憶體區塊,用來儲存硬體紀錄,可用此指令讀取內容。
  last:存取wtmp內容
  lastlog:存取lastlog內容

Log file的儲存設定
系統儲存運作訊息至log file可以修改Log file的儲存設定syslog.conf、rsyslog.conf來改變儲存位置及儲存訊息的層級
紀錄格式: <服務名稱> <識別子: “ .” “.=” “.!” ><等級名稱> <存放路徑>
識別子:
"." : 代表比此等級還高的訊息都要記錄
".=":只紀錄該等級的紀錄
".!" : 該等級資訊不紀錄,其餘的都記錄
等級名稱:
info:僅是一些基本的訊息說明而已;
notice:比 info 還需要被注意到的一些資訊內容;
warning(warn):警示的訊息,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾。
err (error):一些重大的錯誤訊息,例如設定檔的某些設定值造成該服務服法啟動的資訊說明, 通常藉由 err 的錯誤告知,應該可以瞭解到該服務無法啟動的問題呢!
crit:比error 還要嚴重的錯誤資訊,這個 crit 是臨界點 (critical) 的縮寫,這個錯誤已經很嚴重了喔!
alert:警告警告,已經很有問題的等級,比 crit 還要嚴重!
emerg(panic):疼痛等級,意指系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊了。通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息吧!
none:不紀錄關於此服務的內容

Image:rsyslog1.jpg
Fedora core 8
描述把所有訊息都儲存在/var/log/message,但不儲存mail、authpriv、cron三個服務訊息

Codeblock 新增編譯器

Setting -> Compiler and Debugger->Select Compiler -> Copy
Compiler’s installation directory :選擇編譯器binary file存放的位置。
在Program Files子標籤內,填入要使用到的編譯器

Image:codeblock1.jpg
Personal tools