ΠΠ·Π΄Π°Π΄Π΅Π½ Π΄Π΅Π±ΡΠ³Π΅Ρ Π½Π° GDB 12.1 (ΠΏΡΡΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΈΡ 12.x, ΠΊΠ»ΠΎΠ½ 12.0, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°). GDB ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π·Π° ΡΠΈΡΠΎΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (Ada, C, C++, Objective-C, Pascal, Go, Rust ΠΈ Ρ.Π½.) Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Ρ Π°ΡΠ΄ΡΠ΅Ρ (i386, amd64, ARM, Power, Sparc, RISC - V ΠΈ Π΄Ρ.) ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ (GNU/Linux, *BSD, Unix, Windows, macOS).
ΠΠ»ΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΊΠΎΡΡΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° C++ ΡΠ°Π±Π»ΠΎΠ½ΠΈ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° FreeBSD Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ (Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½).
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° GNU Source Highlight ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Pygments Π·Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°.
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "clone-inferior" ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° TTY, CMD ΠΈ ARGS ΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (Π΄ΠΎΠ»Π΅Π½) ΠΊΡΠΌ Π½ΠΎΠ²ΠΈΡ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ΠΎ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ 'set environment' ΠΈΠ»ΠΈ 'unset environment', ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Ρ Π² Π½ΠΎΠ²ΠΈΡ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ.
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "print" ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ, ΡΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π±Π°Π·ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ΅ΡΡΠ½Π°Π΄Π΅ΡΠ΅ΡΠΈΡΠ½Π° ΡΠΎΡΠΌΠ° ("/x").
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π΅Π±ΡΠ³Π΅ΡΠ° ΠΈ GDBserver Π½Π° GNU/Linux/OpenRISC Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (ΠΈΠ»ΠΈ 1k*-*-linux*). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° GNU/Linux/LoongArch (loongarch*-*-linux*). ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° S+core (score-*-*) Π΅ ΠΎΡΠΏΠ°Π΄Π½Π°Π»Π°.
- GDB 12 Π΅ ΠΎΠ±ΡΠ²Π΅Π½ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ Python 2.
- ΠΡΡ Π²ΡΡΠ»Π΅Π½ΠΎ ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ DBX ΠΊΠ»ΠΎΠ½ Π½Π° GDB 13.
- API Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° GDB/MI ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° '-add-inferior' Π±Π΅Π· ΠΎΠΏΡΠΈΠΈ ΠΈΠ»ΠΈ Ρ ΡΠ»Π°Π³Π° '--no-connection' Π·Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π²ΡΡΠ·ΠΊΠ°.
- ΠΠ°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² API Π½Π° Python. ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° GDB/MI ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² Python. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΡΠ±ΠΈΡΠΈΡ gdb.events.gdb_exiting ΠΈ gdb.events.connection_removed, ΡΡΠ½ΠΊΡΠΈΡ gdb.Architecture.integer_type(), ΠΎΠ±Π΅ΠΊΡ gdb.TargetConnection, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ gdb.Inferior.connection, ΠΌΠ΅ΡΠΎΠ΄ gdb.RemoteTargetConnection.send_packet ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ gdb.InferiorThread.details, gdb.Type.is_scalar ΠΈ gdb.Type.is_signed.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru