2009年10月 9日

[installer 2098] gdb-7.0

gdb-7.0 出ています。

新しいことはいろいろあるようですが、Reverse debugging が特に強力…かな。

☆ gdb-7.0
http://www.gnu.org/software/gdb/
http://ftp.gnu.org/gnu/gdb/gdb-7.0.tar.gz
ftp://ftp.gnu.org/gnu/gdb/gdb-7.0.tar.gz


*** Changes in GDB 7.0

* GDB now has an interface for JIT compilation. Applications that
dynamically generate code can create symbol files in memory and register
them with GDB. For users, the feature should work transparently, and
for JIT developers, the interface is documented in the GDB manual in the
"JIT Compilation Interface" chapter.

* Tracepoints may now be conditional. The syntax is as for
breakpoints; either an "if" clause appended to the "trace" command,
or the "condition" command is available. GDB sends the condition to
the target for evaluation using the same bytecode format as is used
for tracepoint actions.

* "disassemble" command with a /r modifier, print the raw instructions
in hex as well as in symbolic form."

* Process record and replay

In a architecture environment that supports ``process record and
replay'', ``process record and replay'' target can record a log of
the process execution, and replay it with both forward and reverse
execute commands.

* Reverse debugging: GDB now has new commands reverse-continue, reverse-
step, reverse-next, reverse-finish, reverse-stepi, reverse-nexti, and
set execution-direction {forward|reverse}, for targets that support
reverse execution.

* GDB now supports hardware watchpoints on MIPS/Linux systems. This
feature is available with a native GDB running on kernel version
2.6.28 or later.

* GDB now has support for multi-byte and wide character sets on the
target. Strings whose character type is wchar_t, char16_t, or
char32_t are now correctly printed. GDB supports wide- and unicode-
literals in C, that is, L'x', L"string", u'x', u"string", U'x', and
U"string" syntax. And, GDB allows the "%ls" and "%lc" formats in
`printf'. This feature requires iconv to work properly; if your
system does not have a working iconv, GDB can use GNU libiconv. See
the installation instructions for more information.

* GDB now supports automatic retrieval of shared library files from
remote targets. To use this feature, specify a system root that begins
with the `remote:' prefix, either via the `set sysroot' command or via
the `--with-sysroot' configure-time option.

* "info sharedlibrary" now takes an optional regex of libraries to show,
and it now reports if a shared library has no debugging information.

* Commands `set debug-file-directory', `set solib-search-path' and `set args'
now complete on file names.

* When completing in expressions, gdb will attempt to limit
completions to allowable structure or union fields, where appropriate.
For instance, consider:

# struct example { int f1; double f2; };
# struct example variable;
(gdb) p variable.

If the user types TAB at the end of this command line, the available
completions will be "f1" and "f2".

* Inlined functions are now supported. They show up in backtraces, and
the "step", "next", and "finish" commands handle them automatically.

* GDB now supports the token-splicing (##) and stringification (#)
operators when expanding macros. It also supports variable-arity
macros.

* GDB now supports inspecting extra signal information, exported by
the new $_siginfo convenience variable. The feature is currently
implemented on linux ARM, i386 and amd64.

* GDB can now display the VFP floating point registers and NEON vector
registers on ARM targets. Both ARM GNU/Linux native GDB and gdbserver
can provide these registers (requires Linux 2.6.30 or later). Remote
and simulator targets may also provide them.

* New remote packets

qSearch:memory:
Search memory for a sequence of bytes.

QStartNoAckMode
Turn off `+'/`-' protocol acknowledgments to permit more efficient
operation over reliable transport links. Use of this packet is
controlled by the `set remote noack-packet' command.

vKill
Kill the process with the specified process ID. Use this in preference
to `k' when multiprocess protocol extensions are supported.

qXfer:osdata:read
Obtains additional operating system information

qXfer:siginfo:read
qXfer:siginfo:write
Read or write additional signal information.

* Removed remote protocol undocumented extension

An undocumented extension to the remote protocol's `S' stop reply
packet that permited the stub to pass a process id was removed.
Remote servers should use the `T' stop reply packet instead.

* The "disassemble" command now supports an optional /m modifier to print mixed
source+assembly.

* GDB now supports multiple function calling conventions according to the
DWARF-2 DW_AT_calling_convention function attribute.

* The SH target utilizes the aforementioned change to distinguish between gcc
and Renesas calling convention. It also adds the new CLI commands
`set/show sh calling-convention'.

* GDB can now read compressed debug sections, as produced by GNU gold
with the --compress-debug-sections=zlib flag.

* 64-bit core files are now supported on AIX.

* Thread switching is now supported on Tru64.

* Watchpoints can now be set on unreadable memory locations, e.g. addresses
which will be allocated using malloc later in program execution.

* The qXfer:libraries:read remote procotol packet now allows passing a
list of section offsets.

* On GNU/Linux, GDB can now attach to stopped processes. Several race
conditions handling signals delivered during attach or thread creation
have also been fixed.

* GDB now supports the use of DWARF boolean types for Ada's type Boolean.
From the user's standpoint, all unqualified instances of True and False
are treated as the standard definitions, regardless of context.

* GDB now parses C++ symbol and type names more flexibly. For
example, given:

template<typename T> class C { };
C<char const *> c;

GDB will now correctly handle all of:

ptype C<char const *>
ptype C<char const*>
ptype C<const char *>
ptype C<const char*>

* New features in the GDB remote stub, gdbserver

- The "--wrapper" command-line argument tells gdbserver to use a
wrapper program to launch programs for debugging.

- On PowerPC and S/390 targets, it is now possible to use a single
gdbserver executable to debug both 32-bit and 64-bit programs.
(This requires gdbserver itself to be built as a 64-bit executable.)

- gdbserver uses the new noack protocol mode for TCP connections to
reduce communications latency, if also supported and enabled in GDB.

- Support for the sparc64-linux-gnu target is now included in
gdbserver.

- The amd64-linux build of gdbserver now supports debugging both
32-bit and 64-bit programs.

- The i386-linux, amd64-linux, and i386-win32 builds of gdbserver
now support hardware watchpoints, and will use them automatically
as appropriate.

* Python scripting

GDB now has support for scripting using Python. Whether this is
available is determined at configure time.

New GDB commands can now be written in Python.

* Ada tasking support

Ada tasks can now be inspected in GDB. The following commands have
been introduced:

info tasks
Print the list of Ada tasks.
info task N
Print detailed information about task number N.
task
Print the task number of the current task.
task N
Switch the context of debugging to task number N.

* Support for user-defined prefixed commands. The "define" command can
add new commands to existing prefixes, e.g. "target".

* Multi-inferior, multi-process debugging.

GDB now has generalized support for multi-inferior debugging. See
"Debugging Multiple Inferiors" in the manual for more information.
Although availability still depends on target support, the command
set is more uniform now. The GNU/Linux specific multi-forks support
has been migrated to this new framework. This implied some user
visible changes; see "New commands" and also "Removed commands"
below.

* Target descriptions can now describe the target OS ABI. See the
"Target Description Format" section in the user manual for more
information.

* Target descriptions can now describe "compatible" architectures
to indicate that the target can execute applications for a different
architecture in addition to those for the main target architecture.
See the "Target Description Format" section in the user manual for
more information.

* Multi-architecture debugging.

GDB now includes general supports for debugging applications on
hybrid systems that use more than one single processor architecture
at the same time. Each such hybrid architecture still requires
specific support to be added. The only hybrid architecture supported
in this version of GDB is the Cell Broadband Engine.

* GDB now supports integrated debugging of Cell/B.E. applications that
use both the PPU and SPU architectures. To enable support for hybrid
Cell/B.E. debugging, you need to configure GDB to support both the
powerpc-linux or powerpc64-linux and the spu-elf targets, using the
--enable-targets configure option.

* Non-stop mode debugging.

For some targets, GDB now supports an optional mode of operation in
which you can examine stopped threads while other threads continue
to execute freely. This is referred to as non-stop mode, with the
old mode referred to as all-stop mode. See the "Non-Stop Mode"
section in the user manual for more information.

To be able to support remote non-stop debugging, a remote stub needs
to implement the non-stop mode remote protocol extensions, as
described in the "Remote Non-Stop" section of the user manual. The
GDB remote stub, gdbserver, has been adjusted to support these
extensions on linux targets.

* New commands (for set/show, see "New options" below)

catch syscall [NAME(S) | NUMBER(S)]
Catch system calls. Arguments, which should be names of system
calls or their numbers, mean catch only those syscalls. Without
arguments, every syscall will be caught. When the inferior issues
any of the specified syscalls, GDB will stop and announce the system
call, both when it is called and when its call returns. This
feature is currently available with a native GDB running on the
Linux Kernel, under the following architectures: x86, x86_64,
PowerPC and PowerPC64.

find [/size-char] [/max-count] start-address, end-address|+search-space-size,
val1 [, val2, ...]
Search memory for a sequence of bytes.

maint set python print-stack
maint show python print-stack
Show a stack trace when an error is encountered in a Python script.

python [CODE]
Invoke CODE by passing it to the Python interpreter.

macro define
macro list
macro undef
These allow macros to be defined, undefined, and listed
interactively.

info os processes
Show operating system information about processes.

info inferiors
List the inferiors currently under GDB's control.

inferior NUM
Switch focus to inferior number NUM.

detach inferior NUM
Detach from inferior number NUM.

kill inferior NUM
Kill inferior number NUM.

* New options

set spu stop-on-load
show spu stop-on-load
Control whether to stop for new SPE threads during Cell/B.E. debugging.

set spu auto-flush-cache
show spu auto-flush-cache
Control whether to automatically flush the software-managed cache
during Cell/B.E. debugging.

set sh calling-convention
show sh calling-convention
Control the calling convention used when calling SH target functions.

set debug timestamp
show debug timestamp
Control display of timestamps with GDB debugging output.

set disassemble-next-line
show disassemble-next-line
Control display of disassembled source lines or instructions when
the debuggee stops.

set remote noack-packet
show remote noack-packet
Set/show the use of remote protocol QStartNoAckMode packet. See above
under "New remote packets."

set remote query-attached-packet
show remote query-attached-packet
Control use of remote protocol `qAttached' (query-attached) packet.

set remote read-siginfo-object
show remote read-siginfo-object
Control use of remote protocol `qXfer:siginfo:read' (read-siginfo-object)
packet.

set remote write-siginfo-object
show remote write-siginfo-object
Control use of remote protocol `qXfer:siginfo:write' (write-siginfo-object)
packet.

set remote reverse-continue
show remote reverse-continue
Control use of remote protocol 'bc' (reverse-continue) packet.

set remote reverse-step
show remote reverse-step
Control use of remote protocol 'bs' (reverse-step) packet.

set displaced-stepping
show displaced-stepping
Control displaced stepping mode. Displaced stepping is a way to
single-step over breakpoints without removing them from the debuggee.
Also known as "out-of-line single-stepping".

set debug displaced
show debug displaced
Control display of debugging info for displaced stepping.

maint set internal-error
maint show internal-error
Control what GDB does when an internal error is detected.

maint set internal-warning
maint show internal-warning
Control what GDB does when an internal warning is detected.

set exec-wrapper
show exec-wrapper
unset exec-wrapper
Use a wrapper program to launch programs for debugging.

set multiple-symbols (all|ask|cancel)
show multiple-symbols
The value of this variable can be changed to adjust the debugger behavior
when an expression or a breakpoint location contains an ambiguous symbol
name (an overloaded function name, for instance).

set breakpoint always-inserted
show breakpoint always-inserted
Keep breakpoints always inserted in the target, as opposed to inserting
them when resuming the target, and removing them when the target stops.
This option can improve debugger performance on slow remote targets.

set arm fallback-mode (arm|thumb|auto)
show arm fallback-mode
set arm force-mode (arm|thumb|auto)
show arm force-mode
These commands control how ARM GDB determines whether instructions
are ARM or Thumb. The default for both settings is auto, which uses
the current CPSR value for instructions without symbols; previous
versions of GDB behaved as if "set arm fallback-mode arm".

set disable-randomization
show disable-randomization
Standalone programs run with the virtual address space randomization enabled
by default on some platforms. This option keeps the addresses stable across
multiple debugging sessions.

set non-stop
show non-stop
Control whether other threads are stopped or not when some thread hits
a breakpoint.

set target-async
show target-async
Requests that asynchronous execution is enabled in the target, if available.
In this case, it's possible to resume target in the background, and interact
with GDB while the target is running. "show target-async" displays the
current state of asynchronous execution of the target.

set target-wide-charset
show target-wide-charset
The target-wide-charset is the name of the character set that GDB
uses when printing characters whose type is wchar_t.

set tcp auto-retry (on|off)
show tcp auto-retry
set tcp connect-timeout
show tcp connect-timeout
These commands allow GDB to retry failed TCP connections to a remote stub
with a specified timeout period; this is useful if the stub is launched
in parallel with GDB but may not be ready to accept connections immediately.

set libthread-db-search-path
show libthread-db-search-path
Control list of directories which GDB will search for appropriate
libthread_db.

set schedule-multiple (on|off)
show schedule-multiple
Allow GDB to resume all threads of all processes or only threads of
the current process.

set stack-cache
show stack-cache
Use more aggressive caching for accesses to the stack. This improves
performance of remote debugging (particularly backtraces) without
affecting correctness.

set interactive-mode (on|off|auto)
show interactive-mode
Control whether GDB runs in interactive mode (on) or not (off).
When in interactive mode, GDB waits for the user to answer all
queries. Otherwise, GDB does not wait and assumes the default
answer. When set to auto (the default), GDB determines which
mode to use based on the stdin settings.

* Removed commands

info forks
For program forks, this is replaced by the new more generic `info
inferiors' command. To list checkpoints, you can still use the
`info checkpoints' command, which was an alias for the `info forks'
command.

fork NUM
Replaced by the new `inferior' command. To switch between
checkpoints, you can still use the `restart' command, which was an
alias for the `fork' command.

process PID
This is removed, since some targets don't have a notion of
processes. To switch between processes, you can still use the
`inferior' command using GDB's own inferior number.

delete fork NUM
For program forks, this is replaced by the new more generic `kill
inferior' command. To delete a checkpoint, you can still use the
`delete checkpoint' command, which was an alias for the `delete
fork' command.

detach fork NUM
For program forks, this is replaced by the new more generic `detach
inferior' command. To detach a checkpoint, you can still use the
`detach checkpoint' command, which was an alias for the `detach
fork' command.

* New native configurations

x86/x86_64 Darwin i[34567]86-*-darwin*

x86_64 MinGW x86_64-*-mingw*

* New targets

Lattice Mico32 lm32-*
x86 DICOS i[34567]86-*-dicos*
x86_64 DICOS x86_64-*-dicos*
S+core 3 score-*-*

* The GDB remote stub, gdbserver, now supports x86 Windows CE
(mingw32ce) debugging.

* Removed commands

catch load
catch unload
These commands were actually not implemented on any target.

----
こがよういちろう


投稿者 xml-rpc : 2009年10月 9日 15:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/89310
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。