Jose M. Laveda ���ڿ��� �����ϱ� ��� ���� �� ����Ŷ� �����ΰ�? DDD�� �����ΰ�? DDD�� ���� ȯ�� ���� �ؿ� �ִ� â ���� ��������. �Ϲ����� ����� ��ġ�� �� |
DDD�� �̿��� �����
���: ddd�� ȯ������ ����ȯ���� ������Դϴ�. �� �ۿ��� �۾��̴� ddd�� �⺻��ɵ鿡 ���� �����ϰ� �ֽ��ϴ�. ���� ���� �ۿ����� ����Ÿ� ����� ���� ���� ����� ���ؼ� ����Ŷ� ��������, ������� ���信 ���ؼ� �����ϰ�, �� ����ϱ� ���� GUI ȯ���� �����- DDD�� �Ұ��Ѵ�. gdb�� ���� �Ǹ��� ����ŵ� ������, �� ���� �������� �������� �������Ƿ�, ������ ����Ÿ� �����.
����Ŷ� �����ΰ�?"������ �� ���α��Ӱ� ��Ҵµ� ���� ���� ���� ������ ������ ���� code�� �����Ͽ���.
/*Code*/ �״� ���α��� ���� �߿� ������ � ���� ������ �˾Ƴ��� ���Ͽ� ������ ���� ���� �ڵ带 �������� �����ؾ� �ߴ�. �̴� �ſ� ����� �۾��̾���, �ҽ� �ڵ带 �ۼ��ϴ� �ð�����, ���� ��� �ð��� �ι質 �� �ɷȴ�. " ������ ���� ���� ��츦 �ѹ����� ����� ���̴�. ���� ���α����� ���װ� �ֱ� �����ε�, �̷� ��� ���� �ҽ� �ڵ��� �̰������� �ٲ㺸�ٰ� ���� �ȵǸ� , " �����Ϸ��� ������ �ֳ� ����?" �ϰ��� �Ѿ�� ����. �� �� ���� ���� ã�� ���ִ� ����Ÿ� �̿��غ���. ����Ŵ� ���α��� ������ ������ �� �ְ� �ϰ�, �̷� ������ �츮�� ���α��� ���� �߿�, ������ ���� ������, ������ ������ ��� �Ǿ�����, Ư���� ���ǿ��� � ���� ���ϴ��� ��� ��� ���� ������ �� �ִ�. ���� ������ ���� �����ϴٸ� ��� ���� �о� ���鼭 ���ظ� �ϵ��� ����. ���� �̾߱��� ���ΰ��� "spy"��� ����Ÿ� �̿��ϸ� ��� ����. jose# spy my_program ��ó�� "spy"�� �����Ű��, ���α��Ӵ� ������ ���� ���� �� ���� �ִ�.
spy > "���α��� 50 ��° �ٱ��� ������Ѷ�" ���ط��� ���� ���α��Ӷ��, ���� ���� ������ ��� ���ο��� ���װ� ������� ���� ã�� �� ���� ���̴�. "spy"�� ���α��� ���� �߿� ������ ���� ���ĵ��� �˷��ֱ� ������ �ſ� �����ϴ�. ����, �̷��� ���� ������� ���� �ʼ����� ���̴�. ���� !!. ���α��� ������ϱ� ���ؼ��� �������� �� �� -g��� �ɼ��� ��!! �ٿ� ��� �Ѵ�. ���������� GDB(GNU �ҽ������� �����/"The GNU Source-Level Debugger")��� ����Ű� �ִ�. (���� �ٸ� �÷������� �ִ�.) GNU General Public License�� ������ �ְ�, ����� ����� �� �ִ�. C, C++, Modula-2�� Assemler�� �ۼ��� ���α��� ������� �� �ִ�. ��κ��� ������ �����ǿ��� �⺻������ gdb�� �����ϰ� �ִ�. ���� ���ٸ� �ٸ� ������ �������� ã�� ������, �ƴϸ� ���ͳݿ��� ���ϱ� �ٶ���. �ҽ� �ڵ带 /usr/src�� ��Ҵٸ�, /usr/src/gdb-4.xxxx/gdb�� ���� ./configure�� �Է��ϰ�, doc�̶� ������ ����, gdb�� ���� ������ ����� �ȴ�. "make gdb.dvi; make refcard.dvi"��� �Է��ϸ� �ȴ�. �� ���ϵ��� ������ �� ���� ���� �� �ְ�, ����Ʈ �� �� �ִ�.
DDD�� �����ΰ�.?gdb�� ���� ������ ����ϱ� ���ٴ� ���� �ʺ��ڰ� ���� �� �� �ְ�, �������� ȯ���� �����ϴ� DDD( Display Data Debugger)�� ���Ͽ� �˾� ����.DDD�� �Ϲ������� �ٸ� ����ź��� ����ϴµ� ������ �������̽��� �����ϰ�, �� ������� �ϴµ� �ʿ��� ȯ���� �ս��� ������ �� �ִ�. ������, ����Ŵ� �⺻������ gdb�� ����ϰ�, �������̽����� �����Ѵٴ� ���� �����ؾ��Ѵ�. ���� DDD�� gdb�� �� �־�߸� �Ѵ�. gdb������, dbx�� xdb, jdb�� �̿��� ���� �ִ�. DDD�� �ҽ��� http://www.cs.tu-bs.de/softech/ddd/���� ���� �� �ִ�. ���� RedHat ����ڴ� rpm ��Ű���ε� ���� �� �ִ�. DDD���� �� ���� ������ �ִ�. �ϳ��� Motif�� ���� ���̺귯���� �̿��ϴ� �����̰�, �ٸ� �ϳ��� ���� ���̺귯���� �̿��ϴ� ���̴�. ���� ���̺귯���� �̿��� ������ �ڽ��� �������� Motif�� ��ġ�Ǿ� ���� �ʴ� ����ڸ� ���� �����̴�. Motif�� Ŭ��(clone)���� ����� ����� �� �ִ� Lesstif�� �̿��ؼ��� �������� �����ѵ�, �̿� ���� ������ ���� �ʱ�� �Ѵ�. �����ִ� ����� http://www.lesstif.org�� ã�ƺ��� �ٶ���. ������ DDD�� lesstif 0.75���� �������� �����߾���. lesstif�� ���� ���� ���� ����Ʈ�� ã�ư��� �ٶ���. ddd�� ���� ��Ű�� ������ ���� ȭ���� ���δ�.(ū ���� ������ ���콺�� Ŭ���ϼ���.)
�� 1. ddd�� �⺻ ȭ�� DDD�� �����Ű�� ������� �� ������ �ִ�. ù��° ����� ������ SPY�� �̸����� �����ó�� ����ϴ� ���̴�. �ٸ� �� ����� ������ ����.
ddd <program> core "core"��� ������ ���α��� ���� �߿� ������ ���� ������ �����Ǵ� �����ε� ���α��� ���� ���� ������ ��� �ִ�. ���� �������� �ý����� �ھ����(core dump)�� ������ �ʴ´ٸ� �ھ�(core)�� ���õ� ȯ�� ������ Ȯ���Ͽ� ���ƶ�. ('ulimit -a'�� ��� �͵��� �����ְ�, 'ulimit -c <value>'�� �ִ� ũ�⳪, �ٸ� ������ ���� �ش�.) process_id�� ���α��� ���� �ǰ� �ִ� �߰����� ������� �� �� �ְ� ���ش�. DDD�� ���� ȯ���� ���α��� ���� ��Ű�µ� �پ��� ����� �����Ѵ�. �پ��� ����� ���⼭ ������ ���� ����, ���� ������ ������� ������ ���̴�. �� DDD ���� ȭ�� �� ���� ���� â(������� �ܼ�/"Debugger console")���� ddd�� ���ؼ� ����Ǵ� �ϵ��� ��������. �� �� â�� gdb�� ���ɾ ���µ��� �����ϰ� ���� �� �ִ�.
DDD�� ���� ȯ���� 1�� ���� �⺻ â�� �� �κ����� ������ �ִ� ���� �� �� �ִ�. ���� ���� â�� ����� �ܼ�(Debugger Console)�̴�(���� ���� gdb�̴�). �� â�� gdb�� ������ ���� �Է��� �� �ִ�. ��� â�� ���α��� �ҽ� �ڵ带 ���� �ش�. �� ���� â�� ���α��� ������ ��ü�� ���������� �����ش�. ��, �յն��ٴϴ� â�� ���ٴ� ddd�� ������ �����Ű�ų� �����ϴ� â�̴�.�ΰ������� ������ ���α��� ���� ���� â��, �ҽ� �ڵ带 ����Ʈ�� �� �ִ� â�� �ִµ� �̵��� ���������� ��� �� �ִ�. ddd�� ����ڿ��� ���� ������ �����Ѵ�. ���� ��� ���콺�� Ŀ���� ���� ���� �������ų� ��ư ���� �������� �Ǹ�, ������ dz�� ������ ���. ��, â�� ���� �� �θ����� ���� ���� ���� ���ɾ�� ���� ���¸� ���� �ش�. �˾� ���� ���� �ʿ��� "help" ���� �ִ�. F1 Ű�� ������ �ڼ��� ������ �� �� �ִ�. ���� �� ���� â���� "help"��� ġ�ų�, "help ���ɾ�(command_name)"��� ġ��, �ڼ��� ������ �� �� �ִ�. �⺻������ �ϳ��� Frame�� ������ â�� �����ϴ� ����ε�, "Preference" ���� �̿��Ͽ� ���ϴ� ������� �и���ų ���� �ִ�.
Figure 2. File ���� ���� ����
���� �ؿ� �ִ� â ���� ���������� �ؿ� �ִ� â�� "Debugger Console"�� �츮�� ������� �� �� ó������ �� �κ��̴�. gdb�� �̹� ����� �� ���� �ִ� ����ڶ��, �� â���� ���� ddd�� �̿��� �� ���� ���̴�. ddd�� ������ �����鼭 � ���� �Ͼ� �������� ���ؼ��� �� â�� ���� ���� �� �� �ִ�. ���ݱ��� ����� ���ɾ ������ "Commands -> Command History" ���� �̿��ϸ� �ȴ�. DDD�� ���ؼ� �ڼ��� �˰��� �� ���� DDD�� ��ġ�� �� ���� �������� ������ ���캸�� �ٶ���. �� �ۿ����� ��� ������ ���� �� �� ���̴�.
�Ϲ����� �����"File" ������ ������� �� ���α��� �ҽ� �ڵ带 �о�´�. ���� â�� �ҽ� �ڵ尡 ���� ���̴�.�ҽ� �ڵ带 ���鼭 ������ ���̳� ���� ���� �� �� �ִ�.���α��� ���ư��� ����� ���� â("Option -> Run in Execution Window")�� debugger console���� Ȯ���� �� �ִ�. debugger console������ GUI ���̺귯���� �̿��ؼ� ���� ���α��� �����ų ���� ����. �ҽ� �ڵ忡�� ���콺�� ���� ���� ������ ������, ���� ������ ���� �� ���� �ִ�. �ƴϸ�, ������ ���� ���콺�� ���� ��, ���콺�� ������ ��ư�� ������ ������ ���� ���� ��Ÿ����.
"Print fname"�� ���� fname�� ���� debugger console�� �����ְ�, "Display fname"�� ���� fname�� ���� ���� ���� �ִ� â("drawing area")�� �����ش�.(������ ������ ���ؼ��� ����� �� �ִ�.) "What is"�� ������ �����̳� ������ �����ְ�, "Lookup"�� ���� ������ �ٸ� ���� �ִ��� ã�µ� ���δ�. ���������� "Break at", "Clear at"�� �ؿ��� ��� ������(Breakpoints)�� ���� ������ �ϴµ� �̿�ȴ�. �̷��� �ϰ� ��� �ϵ��� �ҽ� �ڵ� â�� �� �κп� �ִ� ��ư���� �̿��ؼ� �� ���� �ִ�. �ڽ� �κп� ���ڸ� �Է��ϰ�, ���ϴ� ��ư�� ������ �ȴ�. ������(Break-points)�� ���α��� ���ϴ� �κб��� ���� ��Ű�µ� ���ȴ�. ���α��� ���ϴ� ������ ����ǰ�, �Ͻ� �ߴܵǾ����� �̶����� ������ �� ���� ������ �� �ְ�, ���α��� ��� ���� ��ų �� �ִ�. ������(break-ponint)�� ������ ���α��� ���������� �����ϰų�, ����(bug)�� ���ؼ� ����� ������ ������ �ȴ�. �� ���� �̹� ���α��� �� ����Ǿ����� �����ϱ �ʹ� �ʾ���. ���� ���α��� ���� �߿� ������� �ϴ� ���� �ʿ��ϴ�.
������ ���� �Ͽ� ������(breakpoint)�� ������ �� �ִ�.
���� ������ 70��° �ٰ� 71��° �ٿ� Breakpoint�� ������ ���� �� �� �ִ�. Breakpoint�� ��Ÿ���� ���� �Ѵ��� �� �� �ִ�.
���� ���� �̿��ؼ� Breakpoint�� ���� ������ �� �� �ִ�.
���� ���� �ִ� �Ͱ�, Floating window�� �ִ� ���� ��Ÿ������. �̵��� �̿��Ͽ� ���α��� �����Ű�ų� �ߴܽ�ų �� �ִ�. ���� ���� �̿��ؼ� �����Ű�� ���α��� �Ķ����(Parameter)�� �־� �����ų �� �ִ�. "Step"�� �̿��Ͽ� ���α��� �� �پ� ������ �� �ִ�. ���� ���, ������ �ϸ鼭 �Լ�(function)�� �����ٸ�, "Step"�� �Լ�(function)�� ù �ٿ��� �ٽ� "Step"�� ���� ������ ��ٸ� ���̴�. �ݸ� "Next"�� �Լ��� �Ѳ����� �����Ų��. "Continue"�� Breakpoint�� ���� ���α��� �Ͻ� �ߴܵǾ��� �� ����ؼ� ���α��� �����ϵ��� �Ѵ�. "kill", "interrupt","Abort"�� ���α��� �ߴܽ�ų �� ���δ�. DDD�� ���� ū Ư¡�� �� ���� â�� �ִ�. �츮�� �� â�� �̿��ؼ� Dada�� ������ �����ϰ� �� �� �ִ�. ���� �������� Arguement�� ���� �迭�� ������, ���ҵ��� ���� ���� �ش�. "Data -> More Status Displays"�� �̿��ؼ� ����ڰ� ���� ���ϴ� ���� ������ �� �ִ�. �� â�� �ſ� ���� ������ ���� �ش�. ������ �������� ���μ����� �������Ϳ� � ���� �ִ����� ���α��� �����ϴµ� �ʿ��� ���� ���̺귯�� ���� �����ش�.
��ġ�� ��DDD�� ȯ���� "Options -> Preferences"�� �̿��ؼ� ������� ��� �°� ������ �� �ִ�. �ƴϸ�, Motif�� ������� ���α��� ���� ����� $HOME/.dddinit���ε� �����Ǿ��� �� �ִ�. �ڼ��� ������ �� ���� ������ �Ѿ�Ƿ� �����Ѵ�.ddd�� ��ġ�� �� ���� ��� �ִ� ddd.ps��� ������ �� �� �� �о� ���� �ٶ���. ���� gdb�� �������� �о� ���� �ٶ���.("Debugging with DDB") �ణ�� �ð��� �����ϸ� ���� ����뿡 ���ؼ� ��� �� �ִ�. ���������� �� �ۿ� �߸��� ���� �ִٸ� �뼭�ϱ� �ٶ��� ^^;.
���� : ������
�� ���� ������ �˰� ������:
|
�� ������Ʈ�� Miguel Angel Sepulveda���� ���� �����˴ϴ�. © Emre Demiralp 1998 LinuxFocus 1998 |