network - 远程gdbserver¶
::: tip 场景
当我们出差或者到客户那边联调时,由于你很难带开发服务器192.168.5.251
一起出差,导致我们进行gdb调试异常困难,这我们就需要用到内网穿透的方式进行联调了。
:::
前期准备¶
-
需要一台具备公网IP地址的VPS服务器;
-
开发服务器
192.168.5.251
能访问上面的VPS服务器; -
出差调试的网关能访问上面提到的VPS服务器;
-
下载时,请注意CPU架构,如果VPS和调试的网关的架构不同,那么你需要下载两份;
-
VPS服务器需要运行frps服务端程序;
-
调试的网关需要运行frpc客户端程序;
VPS服务器¶
-
编辑下载后的frps.ini服务端配置
- 上面的7000端口为开放给frpc客户端程序连接的端口,保留默认7000即可.
-
在VPS服务器上运行frps服务端程序
调试的网关¶
-
编辑下载后的frpc.ini客户端端配置
[common] server_addr = yy.yy.yy.yy server_port = 7000 [gdbserver] type = tcp local_ip = 127.0.0.1 local_port = 9000 remote_port = 9000
server_addr
是VPS的公网IP地址;[gdbserver]
可以随便命名;local_port
是在调试网关运行gdbserver命令暴露的端口;remote_port
是开发服务器192.168.5.251
远程连接调试网关用到的端口,可以和local_port
端口不一样;remote_port
和server_port
端口需要在VPS的防火墙放开,否则无法frpc无法连接frps
-
在调试网关上运行frpc客户端程序
-
开启gdbserver
-
如果没有gdbserver命令,那么需要额外安装gdbserver的
ipk
包; - 有两种方式开启gdbserver;
- 把pubmsg主程序停掉,重新运行
gdbserver --once :9000 /usr/bin/pubmsg
- 不想停止pubmsg主程序,想抓取pubmsg主程序现在出现bug的状态和位置,可以attach进程
gdbserver :9000 --attach {pubmsg-pid}
- 把pubmsg主程序停掉,重新运行
开发服务器¶
-
在开发服务器上运行gdb客户端