我在使用鲲鹏DevKit的编译调试插件时遇到了附加进程的问题。本地是Windows系统上的VSCode,远程连接到一台鲲鹏920服务器进行开发。插件安装和基本配置都按照文档完成了,编译生成的程序也可以正常启动和运行,断点调试单步执行这些功能在启动调试模式时都是好用的。但现在我需要调试一个已经跑起来的服务进程,这个进程在启动阶段会加载一些动态配置,必须在运行时才能复现问题,所以必须用“附加到进程”的方式。
插件提供的“远程附加”功能能够列出目标服务器上的进程列表,我选中年后进程ID后,调试器就开始尝试附加,但过一会儿就报错了,提示类似于“无法建立与目标进程的连接,请检查ptrace权限”。我已经在远程服务器上用root执行了echo 0 > /proc/sys/kernel/yama/ptrace_scope,也确认了/etc/sysctl.d/10-ptrace.conf里没有覆盖这个设置。当前用户和待调试进程属于同一个用户,理论上不应该被ptrace限制挡住。用命令行直接gdb attach这个进程是可以成功的,说明系统层面没有硬性阻拦,问题应该出在插件或者VSCode与调试后端的交互环节。
想请教一下这种情况该如何排查,是插件本身对某些场景的附加不支持,还是需要在VSCode的launch.json里额外配置一些隐藏参数?
我在使用鲲鹏DevKit的编译调试插件时遇到了附加进程的问题。本地是Windows系统上的VSCode,远程连接到一台鲲鹏920服务器进行开发。插件安装和基本配置都按照文档完成了,编译生成的程序也可以正常启动和运行,断点调试单步执行这些功能在启动调试模式时都是好用的。但现在我需要调试一个已经跑起来的服务进程,这个进程在启动阶段会加载一些动态配置,必须在运行时才能复现问题,所以必须用“附加到进程”的方式。
插件提供的“远程附加”功能能够列出目标服务器上的进程列表,我选中年后进程ID后,调试器就开始尝试附加,但过一会儿就报错了,提示类似于“无法建立与目标进程的连接,请检查ptrace权限”。我已经在远程服务器上用root执行了echo 0 > /proc/sys/kernel/yama/ptrace_scope,也确认了/etc/sysctl.d/10-ptrace.conf里没有覆盖这个设置。当前用户和待调试进程属于同一个用户,理论上不应该被ptrace限制挡住。用命令行直接gdb attach这个进程是可以成功的,说明系统层面没有硬性阻拦,问题应该出在插件或者VSCode与调试后端的交互环节。
想请教一下这种情况该如何排查,是插件本身对某些场景的附加不支持,还是需要在VSCode的launch.json里额外配置一些隐藏参数?