[Release] GDB 7.0

sql2의 이미지

허거걱. GDB 버젼은 한번도 신경써본적이 없었는데...

어느 덧 7.0 릴리즈가 됐다고 하네요.

아직 native 도 제한적으로 지원하지만,

새로운 기능중에 reverse debugging 과 wide-char 지원되네요.

Version 7.0 of the GDB debugger - the first major release since 2003 - has been announced. Some of the major additions include support for scripting the debugger in Python, reverse debugging (which records the state of the program and can step backward through its execution history), non-stop debugging (whereby a single thread in a multi-threaded program can be stopped while the others continue to run), better support for inline functions, and more.

http://lwn.net/Articles/356044/rss

The GNU Project has released Version 7.0 of the GNU Debugger. The GNU Debugger (GDB) is a source-level debugger for Ada, C, C++, Objective-C, Pascal, and many other languages. GDB can target (i.e., debug programs running on) more than a dozen different processor architectures, and GDB itself can run on most popular GNU/Linux, Unix, and Windows variants. It can be downloaded via FTP at http://ftp.gnu.org/gnu/gdb or ftp://ftp.gnu.org/gnu/gdb.

Major enhancements and bug fixes to Version 7.0 include:

Python scripting support
Reverse debugging, Process record and replay
Non-stop debugging
Multi-architecture debugging
Multi-inferior, multi-process debugging
Interface for JIT compilation
Tracepoints may now be conditional
Multi-byte and wide character set support
New /r and /m modifiers for the "disassemble" command
Automatic retrieval of shared library files from remote targets
Inlined functions are now supported
New remote protocal packets
GDB is now able to read compressed debug sections
Thread switching is now supported on Tru64
Ada task switching is now supported
New features in gdbserver, the GDB remote stub
New command to stop execution when a system call is made
New native configurations:

x86/x86_64 Darwin
x86_64 MinGW
Support for additional targets include:

Lattice Mico32
x86/x86_64 DICOS
S+core 3
The remote stub now supports x86 Windows CE

http://www.ddj.com/development-tools/220600135;jsessionid=UVRWFA1LVRFATQE1GHPCKH4ATMY32JVN

sql2의 이미지

컴파일 에러가 발생하네요

In file included from ./python/python.c:50:
../bfd/version.h:4:1: warning: "REPORT_BUGS_TO" redefined
In file included from ./defs.h:25,
                 from ./python/python.c:20:
./config.h:655:1: warning: this is the location of the previous definition
./python/python.c: In function ‘_initialize_python’:
./python/python.c:592: error: ‘version’ undeclared (first use in this function)
./python/python.c:592: error: (Each undeclared identifier is reported only once
./python/python.c:592: error: for each function it appears in.)
./python/python.c:593: error: ‘host_name’ undeclared (first use in this function)
./python/python.c:594: error: ‘target_name’ undeclared (first use in this function)

include path 문제인데, Makefile 수정하기 귀챃으니...
소스를 수정하시면 됩니다.

$> vim ./gdb/python/python.c

50 #include "version.h"
>> 50 #include "../version.h"

jachin의 이미지

많은 디버거들이 나오고 있지만, GNU Util 로서 계속 발전하고 나와준다는 것이 정말 고맙습니다.

특이한 여러 이기종이 많이 생기면서 gdb 도 각 아키텍쳐별로 지원하기가 무척 힘들텐데,

GNU Utility 들을 꾸준히 만들고 계시는 GNU 개발자 분들에게 감사를 드립니다. :)
====
하나는 전부, 전부는 하나

sql2의 이미지

예전부터 정말 있었으면 하는 기능이었는데요.

리버스디거빙 멋지네요. ^^

기본적으로 200,000 instruction executions 까지되고, ( Zero means unlimited. Default is 200,000 )

http://sourceware.org/gdb/wiki/ReverseDebug
http://sourceware.org/gdb/wiki/ProcessRecord

$> record
$> next
9 int a = 0;
$> next
10 a = a + 1;
$> print a 
<span>1</span>
$> next
11 a = a + 1;
$> print a 
<span>2</span>
$> next
12 a = a + 1;
$> print a 
<span>3</span>
$> reverse-next
11 a = a + 1;
$> print a 
<span>2</span>

7.0 대박이네요.

7.2, 7.3 위키페이지 만들어 놓은거 보면 곧 릴리즈되리라 봅니다.

조만간 디버깅 패러다임이 한번 바꿀듯..^^

oosap의 이미지

http://sourceware.org/gdb/wiki/ProcessRecord/Tutorial

이 내용을 발견하고 깜짝 놀라 kldp 를 찾아보니 reverse debugging 관련된 글은 이 쓰레드 하나이네요...
아마 이 기능을 잘들 안쓰시나봅니다.
써보신 분 계신가요? 이런 거는 강좌란에 정리해두면 좋을 것 같네요..
우선은 위에 영문 뉴토라이얼이 있으니 다행이지만요.. 이 기능에 대해 언급이 몇년동안 없었다는 것이 신기합니다. 무척 놀라운 기능인데요..

관련 쓰레드를 새로 만들었습니다.

http://kldp.org/node/135433#comment-591721

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

sql2의 이미지

저도 잠깐 써보고, QA 등에 활용해볼려고 했으나... 역시 귀찮아서요. ^^;

요런 것도 있으니, 관심 있으시면 보세요. 저도 오랜만에 보네요.ㅋㅋ

http://undo-software.com/

oosap의 이미지

네 스택오버플로에서도 찾아보니 bi-directional debugging, reverse debugging 등으로 찾아지더군요.
저는 gdb 의 record 기능에 100프로 만족합니다. 사용법도 어렵지 않구요. 유로 제품은 개인적으로 여유가 안되고 gdb 에 이렇게 훌륭한 기능이 있다는데 만족합니다. 그리고 의외로 아직 많은 분들이 이 기능을 모르시는 것 같아요...

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.