使用gdbserver远程调试

使用gdbserver远程调试,第1张

使用gdbserver可以对目标设备上的程序进行远程调试。
gdbserver基本用法如下:

此时gdbserver监听端口号1234,并等待客户端连接。

然后就可以对目标设备的程序进行debug了。

最初在使用gdbserver的时候,我遇到了如下问题:

这个问题的核心是:在手机上运行的gdbserver是配置为面向arm架构的(arm-eabi-linux),而在PC端运行的gdb是配置为面向X86_64架构的。

查看gdbserver的版本信息:

可以看到目标设备的gdbserver面向的架构是 arm-eabi-linux
而我的PC上的gdb的架构是 "x86_64-unknown-linux-gnu"
所以,出现了上述问题。

解决方法
保证gdbserver和gdb配置的架构是一致。在PC端安装针对arm架构配置的gdb工具。
gdb:The GNU Debugger for the ARM EABI (bare-metal) target

在archlinux上解决方式是安装 arm-none-eabi-gdb

然后使用arm-none-eabi-gdb连接gdbserver就OK了。

像这样的问题,建议你还是找厂家来吧,因为可能人家说远程调试一下,你都不太明白什么意思,那么就算提供给你方法你也未必能明白,实质服务器一般都是远程调试的,也有一些是,你带着显示器去服务器旁边,连到服务器上,一般服务器的系统都是LIMUX的,远程的道理就是通过IP网络,通过别的电脑,用IP地址切入服务器的 *** 作界面,这是简单的解释。

本机进行开发用tomcat部署时我们可能会在tomcat/bin/catalinash配置如下debug参数进行调试:

但是在远程服务器上同样的配置却在启动调试时报错:

检查Remote配置:

IP和端口号都没问题但是"Connection refused",于是我们检查服务器16808端口情况:

可见当前16808端口服务被绑定了回环地址,外部无法访问,说明JAVA_OPT里address如果不指定ip会默认绑定到本机,如果是要提供远程调试的服务器上的工程,就需要指定当前服务器地址才行,问题于是解决。

一 调试准备

将vs2010远程调试监视器Remote Debugger拷贝到被调试机器中。

(Remote Debugger默认路径: C:\Program Files (x86)\Microsoft Visual Studio 100\Common7\IDE\Remote Debugger)

1 被调试机设置

根据 *** 作系统的位数打开相应文件夹下的msvsmonexe。

点击工具/选项

选择无身份验证(仅限本机),勾选允许任何用户进行调试,点击确定

2 调试机设置

1 直接调试

打开工程的属性页,点击配置属性/调试

作如下配置:

要启动的调试器:选择远程windows调试器

远程命令:填写被调试机上的程序名称,包含路径

工作目录:填写被调试机上的程序的路径

远程服务器名称:填写被调试机IP

连接:选择不带身份验证的远程访问(仅限本机)

点击启动调试

2 附加进程

被调试机启动程序

调试机点击调试/附加到进程,打开附加到进程界面

传输:选择远程(无身份验证仅限本机),限定符填写被调试机IP,点击刷新。

找到对应exe,附加。

若调试时出现断点无法选中的情况:

1保证在调试机和被调试机上的exe版本一致,且均为debug版本。

2保证在调试机和被调试机上的pdb文件版本一致。

第一步:
设置断点:在该行最前面边框双击 或快捷键:Ctrl+Shift+B
第二步:
Debug 运行启动
第三部:
运行到断点后:
使用快捷键F5,F6,F7单步执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13486941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-16
下一篇 2023-08-16

发表评论

登录后才能评论

评论列表(0条)

保存