You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The first single step will stop on line 1 as expected. Client sends WRD_RequestStepInto, server executes script and sends back WRD_Ok.
Then the next single step will fail. What happens is that the client WRDebugClientInterfacePrivate::trapRunOutput will send WRD_RequestStepInto, then the server executes the code, which involves sending back WRD_DebugOut then WRD_Ok.
WRDebugClientInterfacePrivate::trapRunOutput will receive WRD_DebugOut in the loop and then send the WRD_RequestStepInto again. The server executes this and sends back WRD_Ok so the client ends up with three WRD_Ok replies. Not sure where the third WRD_Ok comes from.
The problem is that WRDebugClientInterfacePrivate::transmit is really transmit_receive so it can't receive two packets ( WRD_DebugOut then WRD_Ok) without transmitting again.
I renamed transmit to transmit_receive and then added transmit and receive functions. Then WRDebugClientInterfacePrivate::trapRunOutput looks like:
On Tue, Jul 2, 2024 at 10:23 PM darksotmoon ***@***.***> wrote:
Test script
debug::print("debug out");
str::printf("end");
The first single step will stop on line 1 as expected. Client sends
WRD_RequestStepInto, server executes script and sends back WRD_Ok.
Then the next single step will fail. What happens is that the client
WRDebugClientInterfacePrivate::trapRunOutput will send WRD_RequestStepInto,
then the server executes the code, which involves sending back
WRD_DebugOut then WRD_Ok.
WRDebugClientInterfacePrivate::trapRunOutput will receive WRD_DebugOut in
the loop and then send the WRD_RequestStepInto again. The server executes
this and sends back WRD_Ok so the client ends up with three WRD_Ok
replies. Not sure where the third WRD_Ok comes from.
The problem is that WRDebugClientInterfacePrivate::transmit is really
transmit_receive so it can't receive two packets ( WRD_DebugOut then
WRD_Ok) without transmitting again.
I renamed transmit to transmit_receive and then added transmit and receive
functions. Then WRDebugClientInterfacePrivate::trapRunOutput looks like:
if(transmit( WrenchPacketScoped(WrenchPacket::alloc(packet)) ))
{
bool done = false;
while(!done)
{
WrenchPacket *reply = receive();
if(reply)
{
if( reply->_type == WRD_DebugOut )
{
printf( "%s", (char*)reply->payload() );
}
else
done = true;
g_free( reply );
}
}
}
—
Reply to this email directly, view it on GitHub
<#43>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AALIKAZ7I2SGJYPSA5FLI7LZKNOANAVCNFSM6AAAAABKIUGZJCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGM4DONBZGU2TANQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
Test script
The first single step will stop on line 1 as expected. Client sends
WRD_RequestStepInto
, server executes script and sends backWRD_Ok
.Then the next single step will fail. What happens is that the client
WRDebugClientInterfacePrivate::trapRunOutput
will sendWRD_RequestStepInto
, then the server executes the code, which involves sending backWRD_DebugOut
thenWRD_Ok
.WRDebugClientInterfacePrivate::trapRunOutput
will receiveWRD_DebugOut
in the loop and then send theWRD_RequestStepInto
again. The server executes this and sends backWRD_Ok
so the client ends up with threeWRD_Ok
replies. Not sure where the thirdWRD_Ok
comes from.The problem is that
WRDebugClientInterfacePrivate::transmit
is reallytransmit_receive
so it can't receive two packets (WRD_DebugOut
thenWRD_Ok
) without transmitting again.I renamed transmit to transmit_receive and then added transmit and receive functions. Then
WRDebugClientInterfacePrivate::trapRunOutput
looks like:The text was updated successfully, but these errors were encountered: