Unneeded displaced single stepping causes issues: Performance drop and range stepping killer

Yao Qi yao@codesourcery.com
Fri May 3 02:32:00 GMT 2013


On 04/24/2013 02:58 PM, Raphael Zulliger wrote:
> Sometimes it read consecutive memory by multiple RSP packages.
> Sometime it even reads the same memory region twice. The following
> shows a typical sequence after 1 single-step (or range step) on our system
>
> Sending packet: $vCont;r49c38,49c40:p1.dca318#1f...Packet received: OK
>     Notification received:
> Stop:T05thread:p1.dca318;0:00000002;1:00dce078;2:00dca318;3:00dce09c;4:d8434b16;5:005a21b4;6:00dce098;7:00000002;8:00000005;9:000002e4;a:d8434b16;b:00dce050;c:00000000;d:f5ffffff;e:00000357;f:f1010000;10:00000000;11:fff71658;12:0068e9f0;13:001dd964;14:00000000;15:00000000;16:0069c3d8;17:00000000;18:00000037;19:00000000;1a:00000032;1b:00e6b4c0;1c:00087e48;1d:00ecd2d0;1e:00ecdb98;1f:00dce078;20:00000003d8434b16;21:3ff199999999999a;22:3ff199999999999a;23:0000000000000000;24:0000000000000000;25:0000000000000000;26:0000000000000000;27:0000000000000000;28:0000000000000000;29:0000000000000000;2a:0000000000000000;2b:0000000000000000;2c:401900a3d70a3d71;2d:3ff199999999999a;2e:0000000000000000;2f:0000000000000000;30:0000000000000000;31:0000000000000000;32:0000000000000000;33:0000000000000000;34:0000000000000000;35:0000000000000000;36:0000000000000000;37:0000000000000000;38:0000000000000000;39:0000000000000000;3a:0000000000000000;3b:0000000000000000;3c:0000000000000000;3d:0000000000000000;3e:0
000000000000000;3f:0000000000000000;46:efbeadde;40:00049c40;41:0008a030;42:20000008;43:00049d58;44:00000000;45:00000000;
> Sending packet: $vStopped#55...Packet received: OK
> Sending packet: $mdce0c0,40#ec...Packet received:
> 00e6b488000020300000a03000dce0d000dce0e8004a066800e6b4c0000002020000000100dce0e800dce100004d0aa800dce45000ecd90000b36b7400dce100
> Sending packet: $mdce0c0,40#ec...Packet received:
> 00e6b488000020300000a03000dce0d000dce0e8004a066800e6b4c0000002020000000100dce0e800dce100004d0aa800dce45000ecd90000b36b7400dce100
> Sending packet: $mdce100,40#ba...Packet received:
> 00dce3780008148800ecd9c400000037000000000000003200e6b4c000087e4800dce35800dce35800dce2f800dce154001c748c00dce4008080808064630000
> Sending packet: $mdce340,40#c0...Packet received:
> 0000a030000814580000000400dce3500000000000dce35800ecd2d000dce45000dce40000dce36800dce39000ecd2d000ecdb9800dce37800dce390004cbc38
> Sending packet: $mdce380,40#c4...Packet received:
> 00ecdb9800dce3ac00dce3a000dce39000dce3f8000830e8ffffffff0000000100dce45000ecdb9801dce3b800ecdb9800ecd9280000000800ecd97000ecd970
> Sending packet: $mdce3c0,40#ef...Packet received:
> 00ecdb7000ecd93400ecd97400ecd97000ecdb7000ecd93400e6b6a800dce45000dce40000e6b4c000dce4f40000003500e6b4c000dce3f800dce42800087ec8
> Sending packet: $mdce400,40#bd...Packet received:
> 00e6b4c000dce4f40063d47800dce44c00dce4f400dce45000e6b4c000dce44c00e6b4c000dce42800dce4a8000847b000ecce3c00ecd34c00ecd38800000000
> Sending packet: $mdce480,40#c5...Packet received:
> 00e6b4c000dce4f4000000350000000000dce4a800377a5000000000000000000000006400dce4a800dce4c00008522800dce4d000dce4f40000006400dce4c0
> Sending packet: $mdce4c0,40#f0...Packet received:
> 00dce7980007ec586464646464646464005cc40000e6b4c000dce4f06464646400ecc92064646464005c481800dce4f000dce508005ccb0000eccdb800eccdf0
> Sending packet: $mdce780,40#c8...Packet received:
> 00dce79800dce6d000dca31800e6b4c00000006400dce79800dce7b00007e89c00dca31800ecc7f80000006400dce7b000dcede80034288400dce99000dce930
>
> (Note that this comes from a slightly patched gdb. But I'm pretty sure
> theses patches shouldn't have any influence on these memory reads)

These memory reads are quite target specific, and I can't see similar 
pattern on x86.  However, I find some duplicated reads on x86 caused by 
GDB calling 'gdbarch_skip_prologue', which reads several instructions 
from the remote target.  Please try command 'set trust-readonly-sections 
on' 
(http://sourceware.org/gdb/current/onlinedocs/gdb/Files.html#index-set-trust_002dreadonly_002dsections-1073), 
by which GDB will fetch instructions from sections instead of the remote 
target.  It helps to reduce the number of rsp packets in traffic.  Hope 
it helps.

-- 
Yao (齐尧)



More information about the Gdb mailing list