Commit Graph
397 Commits
Author SHA1 Message Date
Ryan Fleury 7a59548d5b remove 'Symbols' from section titles, now that old sections are gone 2026-04-20 09:57:33 -07:00
Ryan Fleury 881e19c842 get debugger onto new location info & symbol format 2026-04-20 09:57:33 -07:00
Ryan Fleury fee9f9a2c3 when resolving irtrees to values, promote register spaces -> containing process space; fixes pointer casts to register values 2026-04-07 17:16:56 -06:00
Ryan Fleury 8d67460fa6 treat errored call stacks as valid call stack results - only reject on stale data. allow 0 rips for the top frames. 2026-04-01 11:06:23 -06:00
Ryan Fleury d986ea6cd9 guard against invalid ctrl entity handle resolutions when applying ctrl events; otherwise some edge cases can cause invalid writes. 2026-03-31 07:05:44 -07:00
Ryan Fleury a23375a070 re-plug raddbg markup data section into module image info cache; fix detachment signifying 2026-03-29 11:05:45 -07:00
Nikita Smith e907d895c6 refactored Linux layer to use static types for the entities 2026-01-22 13:30:39 -08:00
Nikita Smith 952afd49a7 generalize machine ops 2025-12-16 10:40:48 -08:00
Nikita Smith 962f0e30ae WIP fork 2025-12-09 09:56:43 -08:00
Nikita Smith 38dbcde3f4 debug info path entity is needed otherwise unwinder fails to map key to RDI 2025-12-02 17:00:05 -08:00
Nikita Smith 1602a9e6ea runtime target OS handling 2025-11-27 11:17:47 -08:00
Nikita Smith f9561cb618 add support for CFA in the eval system
Canonical Frame Address is a DWARF-only concept encoded in the unwind info.
Debugger must store this data for each call frame and provide it to
the eval system based on selected stack frame.

To abstract over format details, we introduce a "Frame Unwind Context".
For DWARF, this context maintains the intermediate unwind state and exposes
the CFA, whereas for PE, it remains empty.
2025-11-26 15:42:40 -08:00
Nikita Smith 0565fdef0a WIP add support for GNU LibC TLS model
Unlike on Windows, TLS index isn't part of the module format. glibc stores
it in the opaque link_map struct. There are many different heuristics
a debugger can use to locate it but most of them are unreliable and
prone to errors, or don't work when debugger attaches to a process.
We adopt the newer approach of looking for special symbols
in glibc that provide TLS index offset. These symbols were added in
2021, so programs linked with older glibc won't have TLS support.
2025-11-21 16:41:35 -08:00
Nikita Smith 7cafde3376 revert DWARF changes to commit bda3a71379 2025-11-13 10:53:29 -08:00
Ryan Fleury 17ec73d752 dwarf cleanup checkpoint 2025-11-10 17:41:01 -08:00
Nikita SmithandRyan Fleury 920a3ab3b7 discard unknown FDEs 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury c8c993d4e8 filter for threads 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury fdb1ad5ab6 do not unwind with PE when DWARF unwinder exits with stale flag 2025-11-07 14:39:46 -08:00
Nikita SmithandRyan Fleury 793cd90604 zero out IP when reached last frame 2025-11-07 14:39:45 -08:00
Nikita SmithandRyan Fleury 7f705923e6 parse CIE and FDE out of runtime ELF 2025-11-07 14:39:45 -08:00
Nikita SmithandRyan Fleury 3b81e1a0e9 connect DWARF virtual stack unwinder 2025-11-07 14:39:45 -08:00
Ryan Fleury c0d28e0ced only retry call stacks on stale / gen tears, *not* on errored frames. 2025-10-23 17:41:49 -07:00
Ryan Fleury c8c25c0f98 processless debug info loading/unloading; separate modules from dbg infos in eval; keep dbg infos around after debugging via config, correllate to new modules, evict when necessary, when generating new versions 2025-10-22 16:39:29 -07:00
Ryan Fleury 2f315911a5 switch off rd_cfg to cfg layer 2025-10-16 15:00:13 -07:00
Ryan Fleury 8dbfa97c71 adjust list lens member picking rules - use default argument, then fall back to next, prev, or the first pointer to an identical type 2025-10-16 11:10:00 -07:00
Ryan Fleury ac9d6e861c first pass at list view, w/ asynchronous offset chain gathering 2025-10-15 16:33:59 -07:00
Ryan Fleury 87edc583bf define ctrl entity eval spaces once, in ctrl layer - nest in rd layer 2025-10-13 12:40:28 -07:00
Ryan Fleury c738768e41 demon/win32: do not assume actual_read is valid after a failed process memory read 2025-10-09 16:05:13 -07:00
Ryan Fleury 9022efd3ab new strategy - allow artifact creation to report a completed generation which differs from the requested generation, thus preventing duplicate gen requests (in the case of ctrl process memory) 2025-10-09 11:24:48 -07:00
Ryan Fleury 28bb158c61 revert last change - that will forever-retry those reads! need a slightly different retry mechanism 2025-10-09 11:10:14 -07:00
Ryan Fleury fe6eff9d3b pass requested gen to artifact creation hooks, use to retry ctrl memory reads on many successive mem gen bumps - prevents spurious duplicate hashes in content store history 2025-10-09 10:40:31 -07:00
Ryan Fleury 96477c65dd switch to martins hash 2025-10-08 12:58:59 -07:00
Ryan Fleury 166b84cf30 eliminate content-layer-specific u128 hash 2025-10-07 16:24:54 -07:00
Ryan Fleury cd26bf1bcc only submit empty ctrl process memory artifacts if we have no other history; only retry on mem gen tears & valid ranges 2025-10-07 16:06:59 -07:00
Ryan Fleury 783988c0ac expand ctrl process memory cache access to allow waiting for fresh results, rather than any results; use when doing a ctrl process memory write, to prefer viewing less stale data on exact frame. also expand trap net generation with success bit, use to retry stepping commands across frames if process memory reads are hindered. abort after N retries. 2025-10-07 15:44:35 -07:00
Ryan Fleury 2acf77ad9e fix impossible disasm loading condition; do not go wide on dbgi matching unless we have significant-enough dbgis 2025-10-07 11:34:30 -07:00
Ryan Fleury 835a57f918 extend dbgi matching system with preferred dbgi key, to disambiguate results - fill with primary module dbgi in eval, to always prefer selected thread context when applicable 2025-10-06 14:31:57 -07:00
Ryan Fleury 213dc6a6a7 fix busted ctrl memory stream, when bad memory & null terminated (#647); do not refresh repeatedly due to loading, if any raddbg window is not focused 2025-10-06 11:38:58 -07:00
Ryan Fleury a58c23754a di2 -> di; delete old dbg info layer, delete async layer 2025-10-01 17:30:08 -07:00
Ryan Fleury 7707ba1d60 dwarf debug info option in builds, fix heuristic to try to load debug info from exe itself 2025-10-01 15:36:36 -07:00
Ryan Fleury db66beaf22 correctly interpret conversion completions; single high priority re-loop bit for async threads 2025-10-01 14:32:44 -07:00
Ryan Fleury 24406d1e4e use lack of user bps as hint that no rdis are necessary to wait on 2025-10-01 11:24:37 -07:00
Ryan Fleury cd048a878b fix module req cache bug; fall back on exe path as debug info 2025-09-30 17:54:31 -07:00
Ryan Fleury 4964a94cd3 transition to dbg_info2 2025-09-30 12:52:32 -07:00
Ryan Fleury bf27344a9b replace extra gen parameters in artifact creation hook; replace with explicit cancellation signal, passed by caller 2025-09-30 11:01:04 -07:00
Ryan Fleury 5fa3efe76a bugfix evictions, correctly maintain downstream content hash counts 2025-09-26 15:09:47 -07:00
Ryan Fleury ad9c67ae43 eliminate old caches from ctrl layer 2025-09-26 13:44:19 -07:00
Ryan Fleury b2acc13fb8 eliminate old async call stack computation / call stack cache code 2025-09-26 12:00:25 -07:00
Ryan Fleury 99195282f1 async call stack tree computation -> artifact cache 2025-09-26 11:57:08 -07:00
Ryan Fleury cd7e2d3f89 breakpad dumping: include pdb name if missing exe name, include pdb guid if no exe hash 2025-09-26 11:37:07 -07:00