https://www.jianshu.com/p/bf903adc0c1b
https://blog.csdn.net/qq_44826124/article/details/133157721

一、编译配置

主要配置2个东西,一个是Toolchain(设置gcc、g++的交叉编译工具),一个是cmake(关联toolchain)

  • toolchain

  • cmake

二、远程调试

首先确保项目是一个完整可运行的项目。

https://blog.csdn.net/zcteo/article/details/117559967
CLion 为 GDB/gdbserver 远程调试提供了两种方法:即 - GDB Remote Debug 和 Remote GDB Server。

1. GDB Remote Debug

需要每次debug都需要在目标板子上开启gdbserver,比较麻烦。

Symbol file与Sysroot项可以不用写,Symbol file会通过ssh自动拉取。

2.Remote GDB Server

https://www.cnblogs.com/cc1784380709/p/14341136.html

  • 假如可执行程序依赖了额外的so库报错,需要指定环境变量LD_LIBRARY_PATH
情况1:如果可执行文件已经生成

Target不能为空,但是要随便配个东西。
Executable就是本地要调试的可执行文件

  • 简单的gdbserver配置

    对于android系统,一般自带gdbserver64,位于/system/bin。对于其它linux系统,gdbserver一般位于/usr/bin。

  • 脚本封装gdbserver
    对于某些目标系统,gdb将shell连接之后必须执行mount重新挂载一下文件系统等操作,才能正确执行程序。也就是ssh连接之后得想办法执行一段启动脚本,但是没有找到ssh相关的配置,我研究出了一种新方法:
    GDB Server:这一项不一定非得是gdbserver这个程序,也可以是个脚本,于是可以写个脚本gdb.sh封装gdbserver:

    #!/system/bin/sh
    cd /data/media/build_lxc
    mount -o remount,rw /system && busybox chattr -i -R /system
    mount -o remount,rw /data && busybox chattr -i -R /data
    /system/bin/gdbserver64 :1234 /data/media/build_lxc/bin/lxc-start --logfile ./lxc.log --logpriority info -P /data/media/build_lxc/containers -n android1 -- /init

情况2:可执行文件需要自动构建生成

GDB Remote Debug这种方式,对于cmake项目每次debug,clion会默认去生成最新的可执行文件。

  • Makefile项目
    对于Makefile项目,需要配置Custom Build Targets,然后关联到Remote GDB Server中的target这一项

1.

2.

3.

4.

5.

三、多进程调试

https://blog.51cto.com/zhjh256/4117001

待子进程启动之后,然后通过gdbserver attach到子进程 gdbserver :34567 --attach $(PID)
然后配置Remote Debug:

注意:
1)日志默认是打印在启动父进程的shell里,并非Debug console.
2)启动父进程的shell里会继续输出子进程的日志,但是通过ctrl+c并不能终止子进程。

分类: linuxCLion

0 条评论

发表回复

您的电子邮箱地址不会被公开。