diff options
| author | blasty <blasty@local> | 2026-07-28 15:06:31 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-07-28 15:06:31 +0200 |
| commit | f4630be2da880011598a3f4d5722e38aedaa636a (patch) | |
| tree | 1ee54ad70e20be22dadea86417da2c0ac0e86648 /idatui/trace.py | |
| parent | trace: stepping stays in the view you're reading (diff) | |
| download | ida-tui-f4630be2da880011598a3f4d5722e38aedaa636a.tar.gz ida-tui-f4630be2da880011598a3f4d5722e38aedaa636a.tar.xz ida-tui-f4630be2da880011598a3f4d5722e38aedaa636a.zip | |
trace: a step in split view moves the listing cursor to the pc
Normal navigation moves one pane and gives the companion a band, never a cursor
— that rule exists so the two can't chase each other. A trace step isn't
navigation: time is a single global position and both panes are showing the same
instant, so the cursor belongs on it in both.
_seek_split places the listing cursor on the current instruction, then hands off
to the existing _sync_split so the companion still gets its band and align() at
the driver's screen row. The anchoring machinery is used, not bypassed.
PARTIAL, and the shortfall is worth stating plainly: the LISTING cursor tracks
the pc reliably (tested over consecutive steps). The PSEUDOCODE cursor only
follows when decomp_map covers that address, and for cat's main it covers almost
nothing — four entries for a 700-line function. That is not something this
commit introduced and not something I could fix responsibly without
understanding it; TODO has what I measured, including that dec.goto(96) left the
cursor at 0 in the same run, which may or may not be the same bug.
One real fix along the way: _place_decomp_at prefers the map the trail painting
keeps (keyed to the decompiler's currently loaded function) over the split
view's _split_ea2line. The latter is refreshed by a guarded async path that
drops its result if _cur moved while in flight, and a burst of steps moves _cur
constantly — so during stepping it is frequently a map of the function you just
left.
tests: +2 trace UI (25) — stepping in split moves the listing cursor onto the pc
for six consecutive steps, and the trail marks it 'now' in both panes. 212/0
scenarios.
Diffstat (limited to 'idatui/trace.py')
0 files changed, 0 insertions, 0 deletions
