您可以使用两种调试方法来调试共享库。两者都假设您已经构建了将使用
NI Linux Real-Time,Eclipse Edition的C / C ++开发工具入门文档中描述的实践部署的共享库。该文档与您安装的NI Linux Real-Time(LinuxRT),Eclipse Edition的C&C ++开发工具一起打包。
您还可以将现有代码导入到NI Linux Real-Time(LinuxRT),Eclipse Edition的C&C ++开发工具中,并使用指定的交叉编译器路径和特定前缀
arm-none-linux-gnueabi-
,以实现与在目标上运行的Linux Real-Time操作系统。
要允许Eclipse中的GDB正常工作,必须将/ usr和/ usrlib从目标根文件系统复制到本地主机上的目录<RootFileSystemDir>。在开始之前,请确保您的项目具有可部署的调试配置。
在使用以下调试方法之前,请完成以下步骤以将共享库
.so
文件传输到目标:
- 转到文件菜单栏,然后单击窗口»打开透视»其他»远程系统资源管理器 。
- 单击确定 。
- 单击“ 定义与远程系统的连接”按钮以打开“ 新建连接向导” 。

- 在
General
文件夹下选择SSH Only 。 - 单击下一步 。
- 从父配置文件下拉菜单中选择包含远程系统连接的配置文件 。
- 在“ 主机名”文本框中输入Linux Real-Time目标的主机名或IP地址。
- 单击完成 。
- 在Remote System Explorer窗口中,导航到workspace目录,并在相应项目的Debug文件夹中找到.sofile。
- 通过展开目标下的Sftp Files将.so文件复制到目标的/ usr / lib目录并导航到/ usr / lib
注意:共享库不必放在此目录中。如果放在另一个目录中,则必须向调用库节点提供共享库的完整路径。
在Eclipse中使用GDB的调试方法:请注意,您需要一个.gbdinit文件来运行调试功能。这将在代码中设置断点。完成以下步骤以创建.gbdinit文件:
- 导航到Windows资源管理器中的项目路径。
- 右键单击窗口。
- 选择新建»文本文档»文件»另存为 。
- 选择“ 所有文件”作为“保存类型”并将其命名为
.gdbinit
。 - 选择保存 。
- 在文件中,输入单独的行:
设置断点等待
设置sysroot <RootFileSystemDir>
然后,按照
调试C / C ++项目中的文档,
NI Linux Real-Time,Eclipse Edition的C / C ++开发工具入门中的说明进行操作。这将使您调试共享库。应
在“调试配置”菜单中的
C / C ++远程应用程序下添加新项目。完成以下步骤以进一步调试共享库:
- 导航到“运行” »“ 调试配置” 。
- 在“ 调试配置”窗口中,确保在“ 主”选项卡中选择了项目。
- 在同一选项卡中,转到“ 连接”选项并选择目标。
- 在同一选项卡中,将C / C ++应用程序的远程绝对文件路径更改为指向目标上的共享库。
- 在同一选项卡中,单击“应用”按钮旁边的“ 选择其他” 。
- 从Select Preferred Launcher窗口中,选择Standard Remote Create Process Launcher(如果尚未选择)。
- 单击确定 。
- 导航到“ 调试器”选项卡。
- 选择Gdbserver设置 。
- 记下xxxx格式的端口号。通常,这将具有默认值2345。
- 打开操作系统命令提示符。
- 执行命令gdbserver: xxxx --- attach'pidof lvrt'其中
xxxx
是您的端口号。 - 返回Debug Configurations窗口。
- 在“ 调试器”选项卡中,单击“ 主”选项卡。
- 选择“ 浏览 GDB调试器”选项。
- 导航到<National Instruments> \ Eclipse \ toolchain \ gcc-4.4-arm \ i386 \ bin \ arm-none-linux-gnueabi-gdb.exe。
- 单击打开 。
- 选择“ 浏览”以获取GDB命令文件。
- 导航到当前项目的.gdbinit文件。
- 单击打开 。
- 取消选中启动时停止 。
- 选择Apply»Debug 。
现在应该打开
Debug View ,并且在Eclipse的底部,在
Console选项卡中,您应该能够调试您的应用程序。在共享库源代码中的断点处暂停执行后,您将可以控制此
GDB控制台选项卡。
要停止调试,您需要控制控制台。您可以通过单击标记为
Suspend的暂停图标来停止程序。然后,输入命令detach以取消关联项目。
注意:当从目标上运行的VI调用共享库并且执行到达断点时,目标上的
lvrt
进程将被挂起。这会导致主机失去与目标的连接。一旦调试器不再出现在断点上,就会修复与目标的连接。
使用GDB命令提示符和SSH客户端进行调试:要使用此方法,您需要一个SSH客户端。完成以下步骤以使用GDB命令提示符和SSH客户端进行调试:
- 在本地主机上打开命令提示符。
- 通过键入cd C:\ Program Files \ National Instruments \ Eclipse \ toolchain \ gcc-4.4-arm \ i386 \ bin \导航到GDB调试器的位置。
- 键入arm-none-linux-gnueabi-gdb.exe以执行调试器。
- 输入以下命令:
设置断点等待
file C:/ <共享对象的路径> /ExampleLibrary.so
设置sysroot <RootFileSystemDir>
- 在此处输入命令提示符中的任何断点。
- 在cRIO上找到一个打开的TCP端口,格式为xxxx ,其中xxxx是目标上的开放端口号。默认值通常为2345。
- 打开SSH客户端,然后输入:
gdbserver: xxxx --attach'pidof lvrt'。 - 返回命令提示符并输入:
目标远程<目标名称>: xxxx 。
要退出调试过程,请确保GDB不再处于继续模式,并键入detach。