Windows下用Eclipse和CodeSourcery工具链进行远程交叉调试

来源:互联网 发布:汽车金融数据 编辑:程序博客网 时间:2024/05/22 06:32

上篇讲了搭建开发环境,开始编译程序,这篇讲一下怎么调试程序,加断点,attach到线程。

“在控制器中运行”的意思是用puttytelnetssh工具连接到控制器,在其中输入命令。

 

4、使用Eclipse:调用gdbgdbserver调试程序

设置远程启动方式为手动

Eclipse中,点击window->Preferences->Run/Debug->Launching->DefaultLaunchers,选中中间C/C++ Remote Application下面的[Debug],然后在右侧选择GDB (DSF) Manual Remote DebuggingLauncher。这样的设置下,我们需要首先在目标板上手动用gdbserver启动程序,再在Eclipse中启动调试。自动上传并启动的方法我正在探索。

设置调试器

在小甲虫(Debug)按钮右边的下拉箭头上点击,选择Debug Configuration,双击C/C++ Remote Application,就可以新建一个调试设置。

在最上方可以修改调试设置的名字,比如IPC-GS Remote

main选项卡上的C/C++ Application输入框选择要调试的可执行文件名(IPC-GS-DBG

Debugger选项卡下的main选项卡中的debugger输入框输入arm-none-linux-gnueabi-gdb,其它的复选框都不用选中。

Debugger选项卡下的Connection选项卡中,连接类型选择TCP IP192.168.0.200,端口号填2345

上传文件

IPC_GS_DBG上传到控制器中;

CodeSourcery安装目录中\arm-none-linux-gnueabi\libc\usr\bin中的gdbserver也上传到控制器中;

启动gdbserver

在控制器上执行:

./gdbserver 192.168.0.1:2345 ./IPC_GS_DBG

其中192.168.0.1是你计算机的ip地址,端口号可以随便设置,要跟设置调试器那个步骤中的一样。

这时程序开始监听GDB连接。

启动调试器

在小甲虫(Debug)按钮右边的下拉箭头上点击,下面这时候应该有一项是IPC-GS Remote,点它就可以了。记得设置断点。

 

5、附加到线程

最烦的是,程序启动了,出问题了,但你不知道哪里出了问题,重新用debug方式启动又有可能不能复现错误。此时可以让gdbserver帮忙连到出问题的线程上,查找问题所在。

查看线程编号

使用top命令可以查看CPU占用率,此时按H键,可以把每个进程展开,从而查看到每个线程的线程号。注意通过代码或者日志判断一下你要调试的线程是第几个启动的,从而推断线程号;或者直接打印一下线程号。

attach到线程

在控制器中执行:

 ./gdbserver --remote-debug 192.168.0.4:2345--attach 471

其中ip和端口号意义与之前一样,最后一个是线程号。

Eclipse调用GDB连接到控制器

此处不再赘述,同前

添加断点

注意,此处添加的断点只能在你附加到的线程代码中,如果别的线程也会跑到你的断点,将会导致程序退出。所以一定看好线程号。

至此,程序应该能正常中断,停在你想要的位置了。

0 0
原创粉丝点击