2020 PD1

Using debugger

Why use word "BUG"

Bug 哪來的?

  • 思考邏輯錯誤
  • 未考慮所有可能狀況
  • 變數型態問題
  • Semantic error
    • Dangling else
    • "=" v.s. "=="
    • ...

如何 Debug

  • printf 大法好!
  • 整個重寫 把蟲和房子一起燒了
  • 跟鴨子解釋你的 Code
    • => 整理自己的程式邏輯
  • It's Not a Bug, It's a Feature

使用 Debugger 的好處

  • 觀察程式執行中發生了什麼事
  • 必要時可以暫停程式執行
  • 發現問題時可以修改變數值
  • 不必為了改 printf 重新編譯

CLion debugging

for non-CSIE students

Add breakpoint & run in debug mode

Debug panel

繼續執行

重新執行

停止執行

看程式輸出

下一步(不進function)

下一步(進function)

執行到離開function

變數列表

Call stack

Conditional breakpoint

Right click

GDB debugging

for CSIE students

Compile with debug flag '-g'

gcc -g -o to_debug a.c
gdb to_debug

Run with gdb

sudo apt install gdb

install gdb

gdb commands

指令 簡寫 用途
list l 列出程式碼
run r 執行程式
break <行數> b 新增breakpoint
info breakpoints i b 列出breakpoints
enable / disable <num> 啟用/停用 某個breakpoint
step s 執行下一步(進入function)
next n 執行下一步(不進入function)
finish 執行到離開目前function
continue c 繼續執行程式
print <變數> p 印出變數值

Conditional breakpoint

2020 PD1 debugger

By Liang Yu-Cheng

2020 PD1 debugger

  • 706