不同网段之间实现GDB远程调试功能
前言
在开发过程中,使用gdb远程调试时,会碰到 Linux 服务器的网段和板载设备的网段不是一样的,不能正常使用 gbd 远程调试功能。
板载设备和电脑连接路由器,属于同一个网段,如192.168.1.1,而路由器和Linux服务器属于另一个网段,如10.20.51.251。
问题
板载设备和电脑可以互相ping通,板载设备或电脑也能ping通Linux服务器,但Linux服务器却不能ping通板载设备或电脑。
板载设备或电脑能ping通Linux服务器是因为路由器和服务器属于同一网段,所以通过路由器转发即可ping通,服务器可以ping通路由器的IP,但是无法ping通路由器下面的局域网IP
由于服务器不能ping通板载设备,自然无法使用gdb远程调试,在服务器调试时输入以下指令后出现以下错误(参考在海思芯片上使用GDB远程调试)。
# ./arm-himix200-linux-gdb test
...
(gdb) target remote 192.168.1.102:8005
192.168.1.102:8005: 连接超时.
(gdb)
解决办法
启用路由器的DMZ主机功能,添加板载设备的IP地址即可
关于DMZ主机,实际上就是把内网中的一台主机暴露在外网,直接使用公网IP,这样可以和外网一样。
可以简单地理解成访问路由器IP,就是透传访问DMZ主机设置的IP。
假设板载设备的IP是“192.168.1.140”,路由器的IP是“10.20.51.100”,服务器的IP是“10.20.51.120”。
在使用 GDB 远程调试时,板载设备执行gdbserver,连接的是服务器的IP地址。
# ./gdbserver --remote-debug 10.20.51.120:8005 test
在服务器上运行gdb,连接使用的是路由器的IP地址,而不是板载设备的IP地址。
# ./arm-himix200-linux-gdb test
...
(gdb) target remote 10.20.51.100:8005
Remote debugging using 10.20.51.100:8005
Reading /lib/ld-linux-armhf.so.3 from remote target...
Reading /lib/ld-linux-armhf.so.3 from remote target...
Reading symbols from target:/lib/ld-linux-armhf.so.3...(no debugging symbols found)...done.
0x76fcebc0 in ?? () from target:/lib/ld-linux-armhf.so.3
(gdb)
此时可以正常使用 gdb 的远程调试功能了。
附
如何设置路由器的DMZ主机功能:
以 TP-LINK 路由器为例,登录路由器的设置界面,应用管理,点击DMZ主机

启用DMZ主机功能,输入板载设备的IP地址,保存即可。

不同网段之间实现GDB远程调试功能的更多相关文章
- JVM远程调试功能
有时候想调试线上的程序 可以启用远程调试功能 在本地调试远程代码. 远程JVM启用调试模式 /usr/local/jdk/bin/java -server -Xms256m -Xmx256m -XX: ...
- tomcat如何正确的开启远程调试功能
在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可. 什么是JPDA呢? JPDA(JavaPlatfo ...
- [转] 在安卓设备上使用 Chrome 远程调试功能
你的网页内容在移动设备上的体验可能和电脑上完全不同.Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容. 安卓远程调试支持: 在浏览器选项卡中调试网站. 在原 ...
- tomcat如何正确的开启远程调试功能(转)
转自:http://blog.csdn.net/mhmyqn/article/details/49209541 版权声明:本文为博主原创文章,未经博主允许不得转载. 在日常开发中,有时需要对远程服务器 ...
- 在海思芯片上使用GDB远程调试
1 前言 使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其 ...
- vs2012远程调试功能的改进
不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误. 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一 ...
- gdb 远程调试android进程 -转
什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停 ...
- Gdb远程调试Linux内核遇到的Bug
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...
- [转载]eclipse的远程调试功能配置
原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...
- gdb 远程调试android进程
原文:http://blog.csdn.net/xinfuqizao/article/details/7955346?utm_source=tuicool 什么是gdb 它是gnu组织开发的一个强大的 ...
随机推荐
- 图扑 HT for Web 风格属性手册教程
图扑软件明星产品 HT for Web 是一套纯国产化独立自主研发的 2D 和 3D 图形界面可视化引擎.HT for Web(以下简称 HT)图元的样式由其 Style 属性控制,并且不同类型图元的 ...
- 传统单节点网站的 Serverless 上云
什么是函数?刚刚考完数学没多久的我,脑里立马想到的是自变量.因变量.函数值,也就是y=f(x).当然,在计算机里,函数function往往指的是一段被定义好的代码程序,我们可以通过传参调用这个定义好的 ...
- zzuli 1023
java 读入单个字符 import java.util.Scanner; public class Main{ public static void main(String args[]){ Sca ...
- Tomcat 与 JVM 中classpath的理解和设置总结
本文为博主原创,转载请注明出处: 1.介绍 classpath是java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径.类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的 ...
- 图的遍历(DFS和BFS)
声明:图片及内容基于https://www.bilibili.com/video/BV1rp4y1Q72r?from=articleDetail 图的遍历 深度优先遍历(DFS) DFS核心是递归和栈 ...
- 神经网络优化篇:详解学习率衰减(Learning rate decay)
学习率衰减 加快学习算法的一个办法就是随时间慢慢减少学习率,将之称为学习率衰减,来看看如何做到,首先通过一个例子看看,为什么要计算学习率衰减. 假设要使用mini-batch梯度下降法,mini-ba ...
- [javaee] - tomcat 下载和配置环境变量
以tomcat9为例 第一步 :下载到本地并解压文件 解压后: 第二步:配置环境变量,在系统变量中添加 CATALINE_HOME ,路径为tomcat的目录 启动tomcat , 启动之后不要关 ...
- [转帖]SQL Server 中如何移动tempdb到新的位置
https://www.cnblogs.com/OpenCoder/p/10322904.html 操作步骤:1.检查tempdb的逻辑名字和它的存在位置.可以使用下面语句: SELECT name, ...
- [转帖]为什么需要在脚本文件的开头加上#!/ bin / bash?
本文翻译自:Why do you need to put #!/bin/bash at the beginning of a script file? I have made Bash scripts ...
- [转帖]Tomcat 优雅关闭之路
本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ作者:马运杰 本文通过阅读Tomcat启动和关闭流程的 ...