[hellogcc] Re: Why GDB fails to connect on first attempt and always succeed on second

  • From: Li Bingqiu <lbingqiu@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Thu, 13 Dec 2012 12:14:52 +0800

问题原因已经找到,就是qemu网络延时导致。从log信息中看到当发完第三个qSupported packet,Ack才回来。
其实这个Ack是响应第一个qSupported packet。 我从gdbserver这边的log信息看,他是很快sent Ack
done通过一个写write系统调用。中间的花费大概6s时间在网络传输中。我暂时的解决办法是把gdb
中remote_timeout从2s改到6s,这个就工作了,谢谢大家在帮忙。

On Wed, Dec 12, 2012 at 11:02 AM, Li Bingqiu <lbingqiu@xxxxxxxxx> wrote:

> 谢谢你的建议,暂时还不能更换,更高的版本需要porting。我自己去看下代码,如果解决了,我会把解决办法发出来
>
>
> On Wed, Dec 12, 2012 at 10:26 AM, Yao Qi <qiyaoltc@xxxxxxxxx> wrote:
>
>> 第一次失败的:
>>
>>
>> On 12/12/2012 09:47 AM, Li Bingqiu wrote:
>>
>>> (gdb) target remote :1234
>>> Remote debugging using :1234
>>> Sending packet: $qSupported#37...Sending packet:
>>> $qSupported#37...Sending packet: $qSupported#37...Ack
>>>
>>
>> 这里不对。 gdb 莫名其妙的连续发出了三个qSupported packet,一般情况 下,GDB在target remote
>> 的时候,只用发出一个qSupported packet,参见你第二 次成功的output。
>>
>>
>>  Packet received:
>>> PacketSize=7cf;QPassSignals+;**qXfer:libraries:read+;qXfer:**
>>> auxv:read+;qXfer:features:**read+
>>> Packet qSupported (supported-packets) is supported
>>> Sending packet: $qXfer:features:read:target.**xml:0,7ca#46...Ack
>>> Packet received:
>>> PacketSize=7cf;QPassSignals+;**qXfer:libraries:read+;qXfer:**
>>> auxv:read+;qXfer:features:**read+
>>> Unknown remote qXfer reply:
>>> PacketSize=7cf;QPassSignals+;**qXfer:libraries:read+;qXfer:**
>>> auxv:read+;qXfer:features:**read+
>>>
>>
>> 前边的三个qSupported packet,导致后边的packet都乱了,所以这里报错了。
>>
>> 如果你们可以更换gdb,那就更新到最新的gdb (6.8有点太旧了),如果还有问 题,去sourcware bugzilla
>> 开bug,到时候会有人去fix。 不过你们不能更换 gdb,那就自己fix吧。看看 remote.c:remote_query_**supported
>> 的代码。  Good luck!
>>
>>
>

Other related posts: