VisGDBV4.2 出现 VisualGDB is Waiting for the GDBServer application to start ...解决方法

本文介绍了解决GDBServer端口被占用的问题,包括调整端口号设置、检查后台进程并终止冲突进程的方法。

可能的原因1:VisualGDB Project Setting->Debug settings 改了端口号,保存


寻找原因:

对比project-Debug.vgdbsettings,红色为新增处

.....

  <GenerateCtrlBreakInsteadOfCtrlC>false</GenerateCtrlBreakInsteadOfCtrlC>
    <PreferredDevice />
    <UseDefaultInstallDir>false</UseDefaultInstallDir>
    <RemotePort>5038</RemotePort>
    <LocalPort>5038</LocalPort>

.....

 <EnableThreadNameWatcher>true</EnableThreadNameWatcher>
    <LaunchAMStartParameters />
    <StartupActivity />
    <GDBServer />

    <StandaloneExeSettings>
      <DeploymentDirectory>/data/local/tmp</DeploymentDirectory>
      <WorkingDirectory />
      <CommandLineArguments />
      <Environment>
        <Records />
      </Environment>
    </StandaloneExeSettings>
  </Debug>

.......


结果与解决方案:

结果测试发现问题在  <WorkingDirectory />.

修改为<WorkingDirectory>/data/local/tmp</WorkingDirectory>即可,也可通过VisualGDB Project Setting->Debug settings修改.


可能的原因2:工程中创建su后台进程  su --daemon&.

root      1971  1     1140   332   c0262d18 b6ec0110 S su


寻找 原因:

root@generic:/ # ps | grep su
ps | grep su
root      7     2     0      0     c0093bb4 00000000 S sync_supers
system    56    1     19660  6004  ffffffff b6f2c5cc S /system/bin/surfaceflingr
root      1011  1     1140   332   c0262d18 b6f01110 S su
root@generic:/ # netstat -apn
netstat -apn
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 127.0.0.1:5037         0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:5039           0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:5555           0.0.0.0:*              LISTEN
 tcp       0     95 10.0.2.15:5555         10.0.2.2:5656          ESTABLISHED
root@generic:/ # kill 1011
kill 1011
root@generic:/ # kill 1011
kill 1011
/system/bin/sh: kill: 1011: No such process
1|root@generic:/ # netstat apn
netstat apn
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 127.0.0.1:5037         0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:5555           0.0.0.0:*              LISTEN
 tcp       0      0 10.0.2.15:5555         10.0.2.2:5656          ESTABLISHED
root@generic:/ #


结果:

由于su 在后台运行,无法释放gdbserver端口号.把此进程Kill掉,即可以.


注意:

root      1783  1667  1140   340   c0262d18 b6ecc110 S su  这种情况没关系.






<think>好的,我现在需要解决用户提到的GDBServer错误:“failed to get index for device name 'Unspecified'”。用户还提到可能与设备名称'Unspecified'相关,并引用了使用gdb生成核心文件的步骤。首先,我得理解这个错误通常发生在什么情况下。 根据经验,GDBServer在连接目标设备时,需要正确识别设备名称。如果设备名称被设置为'Unspecified',可能导致GDBServer无法找到对应的设备索引,从而引发错误。可能的原因包括配置错误、设备未正确连接或识别,或者GDBServer版本问题。 接下来,我应该考虑可能的解决方案。首先检查设备连接状态,确保设备被正确识别。然后查看GDBServer的启动参数,确认设备名称是否正确指定。有时候,更新或降级GDBServer版本也能解决兼容性问题。另外,检查调试环境配置,比如是否正确设置了目标架构和端序设置。如果问题依旧,尝试生成核心文件并分析,可能通过gdb的generate-core-file命令来获取更多信息。 用户提供的引用中提到用gdb附加进程生成核心文件,这可能帮助诊断问题。但需要确认是否有权限操作目标设备,以及GDBServer是否支持该功能。另外,检查日志文件或启用详细输出模式,可能会显示更详细的错误信息,帮助定位问题根源。 可能的步骤包括:验证设备名称配置、检查设备连接、更新GDBServer、检查权限和路径设置、查看日志等。需要逐一排除这些可能性,找到具体原因。</think>### 分步解答 #### 1. **确认设备名称配置** - **问题背景**:GDBServer需要正确的设备名称才能建立调试连接。若配置中使用了`Unspecified`,可能表示未正确识别目标设备或配置缺失。 - **操作步骤**: 1. 检查启动GDBServer的命令行参数,确认是否显式指定了设备名称(如`--attach <pid>`或`--target <device>`)[^1]。 2. 若使用自动化脚本,检查脚本中设备名称的赋值逻辑,避免传递空值或默认值`Unspecified`。 3. 示例命令: ```bash gdbserver :1234 --attach $(pidof your_program) # 明确指定PID ``` #### 2. **检查设备连接与权限** - **可能原因**:设备未正确连接或权限不足导致GDBServer无法访问。 - **操作步骤**: 1. 使用`adb devices`(Android)或`lsusb`(Linux)确认设备已连接且被系统识别。 2. 确保当前用户对设备有调试权限(如加入`plugdev`用户组)。 3. 重启设备或GDBServer服务,尝试重新连接。 #### 3. **更新或降级GDBServer版本** - **兼容性问题**:旧版本GDBServer可能存在设备识别缺陷。 - **操作建议**: 1. 通过包管理器更新GDBServer(如`apt-get install gdbserver`)。 2. 若更新后问题依旧,尝试下载特定历史版本测试。 #### 4. **启用详细日志输出** - **调试手段**:通过日志定位具体错误环节。 - **操作步骤**: 1. 启动GDBServer时添加`--verbose`参数: ```bash gdbserver --verbose :1234 your_program ``` 2. 观察输出中是否包含设备索引相关的错误详情。 #### 5. **生成核心文件分析** - **引用方法**:通过生成核心文件进一步排查[^1]。 - **操作步骤**: 1. 使用gdb附加到目标进程: ```bash gdb -p <pid> ``` 2. 生成核心文件并退出: ```bash (gdb) generate-core-file /tmp/core.dump (gdb) detach (gdb) quit ``` 3. 分析核心文件: ```bash gdb your_program /tmp/core.dump ``` #### 6. **检查目标架构与端序设置** - **配置问题**:交叉调试时需匹配目标设备的架构。 - **操作步骤**: 1. 确认GDBServer编译时支持的目标架构(如ARM、x86)。 2. 启动时指定正确的端序(`--big-endian`或`--little-endian`)。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值