Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom
Bar]
Jose M. Laveda

���ڿ��� �����ϱ�

��� ���� ��
����Ŷ� �����ΰ�?
DDD�� ������
DDD�� �׷��� ȯ��
���� �ؿ� �ִ� â ���� ��������.
�Ϲ����� �����
��ġ�� ��

DDD�� �̿��� �����

���: ddd�� ȯ������ �׷���ȯ���� ������Դϴ�. �� �ۿ��� �۾��̴� ddd�� �⺻��ɵ鿡 ���� �����ϰ� �ֽ��ϴ�.




���� ��

�� �ۿ����� ����Ÿ� ����� ���� ���� ����� ���ؼ� ����Ŷ� ��������, ������� ���信 ���ؼ� �����ϰ�, �� ����ϱ� ���� GUI ȯ���� �����- DDD�� �Ұ��Ѵ�. gdb�� ���� �Ǹ��� ����ŵ� ������, �� ���� �������� �������� �������Ƿ�, ������ ����Ÿ� �����.

����Ŷ� �����ΰ�?

"������ �� ���α׷��Ӱ� ��Ҵµ� ���׸� ���� ���� ������ ������ ���� code�� �����Ͽ���.

/*Code*/
(...)
loop
change_a_variable;
show_value_of_variable;
end_loop
(...)

�״� ���α׷��� ���� �߿� ������ � ���� ������ �˾Ƴ��� ���Ͽ� ������ ���� ���� �ڵ带 �������� �����ؾ� �ߴ�. �̴� �ſ� ����� �۾��̾���, �ҽ� �ڵ带 �ۼ��ϴ� �ð�����, ���׸� ��� �ð��� �ι質 �� �ɷȴ�. "

������ ���� ���� ��츦 �ѹ����� �޾���� ���̴�. ���� ���α׷����� ���װ� �ֱ� �����ε�, �̷� ��� ���� �ҽ� �ڵ��� �̰������� �ٲ㺸�ٰ� �׷��� �ȵǸ� , " �����Ϸ��� ������ �ֳ� ����?" �ϰ��� �Ѿ�� ����. �� �� ���׸� ���� ã�� ���ִ� ����Ÿ� �̿��غ���.

����Ŵ� ���α׷��� ������ ������ �� �ְ� �ϰ�, �̷� ������ �츮�� ���α׷��� ���� �߿�, ������ ���� ������, ������ ������ ��� �Ǿ�����, Ư���� ���ǿ��� � ���� �߻��ϴ��� ��� ��� ���� ������ �� �ִ�. ���� ������ ���� �����ϴٸ� ��� ���� �о� ���鼭 ���ظ� �ϵ��� ����.

���� �̾߱��� ���ΰ��� "spy"��� ����Ÿ� �̿��ϸ� ��� ����.

jose# spy my_program

��ó�� "spy"�� �����Ű��, ���α׷��Ӵ� ������ ���� ���� �� ���� �ִ�.

spy > "���α׷��� 50 ��° �ٱ��� ������Ѷ�"
spy > "���� X�� ���� ������ ����϶�"
spy > "���� X�� type�� ������"

���ط��� ���� ���α׷��Ӷ��, ���� ���� ������ ��� ���ο��� ���װ� ������� ���� ã�� �� ���� ���̴�.

"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
ddd <program> <process_id>

"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)�� ������ �� �ִ�.

  • ������(breakpoint)�� �����ϰ��� �ϴ� ���� �� ���ʿ� ���콺�� ��ġ��Ų ���� ���콺�� ������ ��ư�� ������. �׸��� "Set Breakpoint"�� "Set Temporary Breakpoint"�� �����Ѵ�. �� ���� �������� Temporary�� �� �ٱ��� ������ �ѹ� �� �� Breakpoint�� �����ȴٴ� ���̴�. "Set Breakpoint"�� ���ɾ ���ؼ��� Breakpoint�� ���� �ȴ�.
  • �ҽ� �ڵ� â���� "Break at()"��� ��ư�� ������.
  • debugger console���� "break <�ٹ�ȣ>"�� �Է��Ѵ�.
  • "Source->Edit Breakpoints" �޴����� breakpoint�� ������ ���� �ִ�.
  • ���� �׸����� 70��° �ٰ� 71��° �ٿ� Breakpoint�� ������ ���� �� �� �ִ�. Breakpoint�� ��Ÿ���� �׸��� �Ѵ��� �� �� �ִ�.

    ���� �޴��� �̿��ؼ� Breakpoint�� ���� ������ �� �� �ִ�.
    "Condition" �� �̿��ϸ�, ���ǿ� ������ ���� Breakpoint�� �۵��� �ϵ��� �� ���� �ִ�. ���α׷��� Breakpoint�� ������ ��, ������ �´����� Ȯ���ϰ�, ���ǿ� ���� ���� ���߰� �� �� �ִ�."Ignore Count"�� �̿��Ͽ� Breakpoint�� ������ ���� <n>�� ������ �� �Ŀ� ���α׷��� ���ߵ��� �� �� �ִ�. ���� ��� �ݺ������� �ݺ����� 15�� �ݺ��� �Ŀ� ���ߵ��� �� �� �ִ�. �ϴ� ���α׷��� 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