参考文档:
在函数的第一条汇编指令打断点
gdb调试--汇编指令处断点
g++编译main.cpp
在C++项目目录下打开命令行终端,执行编译命令:
g++ -g -o main.o main.cpp
接着,继续执行命令:
gdb main.o
打断 b *main
(gdb) b *main
Breakpoint 1 at 0x1174: file main.cpp, line 16.
(gdb) start
Temporary breakpoint 2 at 0x1174: file main.cpp, line 16.
Starting program: /home/csdn/CLionProjects/ziyu-learn-aqs-cpp/main.o
Breakpoint 1, main () at main.cpp:16
16 {
(gdb) disass
Dump of assembler code for function main():
=> 0x0000555555555174 <+0>: endbr64
0x0000555555555178 <+4>: push %rbp
0x0000555555555179 <+5>: mov %rsp,%rbp
gdb指令 | 说明 |
---|---|
b *main | 把断点设置在汇编指令层次函数的开头 |
start | 开始执行程序,并main函数的停在第一条语句处。 |
run | 连续执行程序,直到遇到断点 |
si | 单步调试汇编指令 |
i b | (info break)查看gdb断点 |
disass | 查看反汇编代码,=>指向下一句汇编指令 |