gdbserver在Eclipse

时间:2016-11-07 17:19:13

标签: eclipse gdbserver

在点击断点后,gdb似乎在尝试一两行之后陷入了糟糕的状态。我在Eclipse中可以做些什么来解决这个问题吗?

摄制:

  1. 在Eclipse中启动调试会话,附加到远程目标
  2. 在Eclipse中设置断点,然后在目标上触发它。
  3. 在Eclipse中正确命中断点。现在'跳过'一两行。
  4. 预期结果:

    • '跳过'将执行一行,正如您通常所期望的那样。

    实际结果:

    1. 而不是转到下一个行号,程序似乎继续'。在Eclipse的调试视图中,显示所有线程的树将它们全部最小化,并且无法展开它们以显示当前堆栈。此外,"步骤..."按钮不再启用,"暂停"并且"停止"按钮可以按下。这意味着程序正在运行,这是我们之前已经按下"跳过"而不是预期的。查看目标,它没有运行,而是仍然暂停。
    2. 如果我们点击暂停'在Eclipse中,然后使用断点打开特定的线程,我们可以看到指令指针返回到我们希望它在点击“跳过”之后的正确位置。先前。所以,乍一看,我们的工作流程似乎只是打嗝,只需要暂停'暂停'并且找到我们以前的线程,只要步进不正常。但很快就会停止工作......
    3. 我已经能够在没有Eclipse的情况下重现这个问题,只需使用命令行gdb和远程gdbserver。出现相同的行为。一个hacky潜在的解决方法是 - 一旦你点击了你的断点,就设置了调度程序锁定'。在那之后,您可以踩到自己心中的内容。但是,我不太了解他们在做什么。

      有人有任何意见吗?

      感谢。

1 个答案:

答案 0 :(得分:0)

连接到设备后,在Eclipse GDB控制台中输入:

设置调度程序锁定步骤

这是Eclipse的UI不直接支持的gdb客户端命令,因此您必须手动输入它。您还可以将其添加为Eclipse在安装过程中调用的另一个命令的挂钩,因此您不必手动键入它。需要注意的是,必须在设备连接后调用它。因此,您不能直接在gdbinit文件中调用此命令,它必须是一个钩子(如果您尝试自动执行此步骤,而不是直接在控制台中键入命令)。