首先修改编译选项,在gcc编译选项里加入-g 用于将调试信息嵌入到可执行文件中
然后链接脚本中的/DISCARD/部分如果有跟调试信息相关的部分也要去掉(建议直接去掉/DISCARD/部分)
然后配置Clion的远程调试选项
在运行调试选项里选择GDB Remote Debug
target remote实参填上tcp:ip地址:1234(这里我的qemu是在虚拟机中运行的,如果你的clion和qemu在同一个环境下,ip就填127.0.0.1)
符号文件选择刚刚编译的二进制文件(注意文件的位置,要根据使用的gdb所在的来判断,如果使用的本地的gdb就需要把编译的二进制文件下载到本地,如果是远程的gdb,就可以填入远程的二进制文件位置,这时候不用管clion的错误信息)
在qemu的运行参数里加上
-S 启动时会暂停虚拟机
-s 相当于-gdb tcp::1234,也就是在1234端口打开gdb的tcp连接
完成后重新编译并打开qemu,qemu会自动暂停等待
然后在clion中启动调试,暂停程序运行,在gdb控制台里面输入 b 函数名
就可以看到效果了