ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ ΡΠ΅Π»ΠΈΠ·ΡΡ Π½Π° ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° GDB 16.1 (ΠΏΡΡΠ²ΠΈΡΡ Π²ΡΠΏΡΡΠΊ ΠΎΡ ΡΠ΅ΡΠΈΡ 16.x, ΠΊΠ»ΠΎΠ½ 16.0 Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°). GDB ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡΠ»Π°Π΄ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠ΅ΠΊΡΡ Π·Π° ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡΠΈ (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust ΠΈ Π΄Ρ.) Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch ΠΈ Π΄Ρ.) ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ (GNU/Linux, *BSD, Unix, Windows, macOS).
ΠΠ°ΠΉ-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
- ΠΠ° Linux-ΡΡΠ΅Π΄ΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° LoongArch Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π·Π°ΠΏΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡΠ½Π΅ (record/replay).
- ΠΠ° ΡΠ°Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΡΠ°ΡΡ ΠΎΡ Π±ΠΈΡΠΎΠ²Π΅ΡΠ΅ Π² ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΎΡΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ (watchpoint).
- ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° AArch64 Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΠ»Π°Π΄ΠΊΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°ΡΠΈΡΠ° MTE (Memory Tagging Extension). MTE Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅ ΠΊΡΠΌ ΠΎΠ±Π»Π°ΡΡΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π·Π° Π΄Π° ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ bash-ΡΠΊΡΠΈΠΏΡ gstack, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ GDB Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠ΅ΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
- ΠΠ° ΡΠΎΡΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ (pending) ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠΌΠΈ 'thread' ΠΈ 'task' ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°Ρ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅, Π° Π½Π΅ ΡΠ»Π΅Π΄ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π½Π° ΡΠΎΡΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠ°Π½Π΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΡΠΎΡΠΈ, ΡΠ°ΠΌΠΎ Π² ΡΠ°Π·ΠΈ ΡΠ°ΡΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΡ ΠΏΠΎΡΠΎΠΊ.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel: ΠΏΡΠΈ ΡΡΡΠΏΠΊΠΎΠ²Π° ΠΎΡΠ»Π°Π΄ΠΊΠ°, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ 'record instruction-history' ΠΈ 'record function-call-history' Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ptwrite.
- Π Python API ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ: ΠΌΠΎΠ΄ΡΠ» gdb.missing_objfile, ΡΡΠ±ΠΈΡΠΈΠ΅ gdb.tui_enabled, Π°ΡΡΠΈΠ±ΡΡ gdb.Symbol.is_artificial ΠΈ ΡΡΠ½ΠΊΡΠΈΡ gdb.record.clear.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° DAP (Debugger Adapter Protocol), ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ 'scopes', 'launch' ΠΈ 'attach'.
- Π ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π·Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½Π° ΠΎΡΠ»Π°Π΄ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ 'vFile:stat' ΠΈ 'x addr,length'.
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° QNX Neutrino, Nios II ΠΈ Intel MPX.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
