启动gdb
gdb ./可执行文件.exe
添加断点( 指令 “b MainWindow::init()” 前的“(gdb)” 表示已经进入gdb调试模式)
// 在MainWindow::init() 函数处添加断点
(gdb) b MainWindow::init()
查看断点
// 查看断点信息(info b)
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x000b38ac <MainWindow::init()+12>
y 表示断点 yes enable
去使能断点
// 去使能序号为1的断点
disable 1
// 查看断点
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep n 0x000b38ac <MainWindow::init()+12>
n 表示断点not enable
// 使能序号为1的断点
enable 1
删除断点
// 删除序号为1的断点
(gdb) del 1
执行程序
(gdb) r
查看堆栈
(gdb) bt
#0 0x000b38ac in MainWindow::init() ()
#1 0x000b2f74 in MainWindow::initWindow() ()
#2 0x000b1832 in anim_size_cb(void*, int) ()
#3 0x001bdd9c in anim_timer ()
#4 0x001c26b6 in lv_timer_handler ()
#5 0x0001f2da in main ()
进入函数(如果step进不去函数内部,编译程序时应该没有加-g)
(gdb) s
单步调试
(gdb) n
退出函数(不想在函数内调试了)
(gdb) finish