| |
���������� ���������� ���������, ������� ��������� ������ ���� ������ ���������. �������� ���������� ��������� - ���� ����������� ������������ � ������������ ������� ������������ �������� �� ����������� ����������, �� ���� ����������, ��� ���������� � �������� �� ����������. �������� ��������� ���������� ��� Linux �������� ��������� GNU GDB. GDB �������� ��������� �������� ������������, �� ��� ������� ������� ���������� ������������ ���� ��������� �� ���.
����� �� ���������� ���������, ���������� ������, �������������� ���� �� ������ ����������, ���� ��������� ��������, �� ������� ��� ����� ����� �����.
��� �������� �������, ����� ������������ ��������� ��� � ���������
GDB ������������� ��� ������������� �����������. �� ���������� ���������� �� ������ ��������� ������, �������� �������, ��� �� ���������� ��������� C++ �� ����� ���������, � �� �������� ���, � ������� ��� ������������� �������������.
��� ����������� �� ���������� �������, ������� ����������� ��������� �� C++ � ����������� �����, ���������� �������� ���. � ���������� ����� �������� ���������� �� ������������ ���� C++ �������� ��� ����������. ��������� �������� C++ ������ ������������� � ��������� �������� ������, � ����������� ���� ��������� ���������� ������ ��������. ���������� � ������ ���������� � ���������� C++ � ����� �������� ��������� �� �������� ����������� ��� �� ����������. �������, ��� ���������� ������ ��������� �� ������ ��������� ������, ���������� ������ ��������� � ��������� ��������� �������������� ����������. ������ �� ��������� � ����������, ������������ �������������, � ����������� ����.
����� ������� ����������� (gcc), ��� �� ���������� ���������� ���� ���������, � ������� ���������� � �������������� ����������, �������� ���� -g � ����� ���������� � ����������. ��������, ���� ���� ��������� ������� �� ���� ������ main.C � utils.C, �� ������ ��������������� �� ���������
gcc -c -g -Wall main.C gcc -c -g -Wall utils.C gcc -g -o myprog main.ob utils.o
��� ����� ��������
gcc -g -Wall -o myprog main.o utils.o
��� ������������������ ������ �������� � �������� ������������ ����� myprog.
����� ��������� ���������� ��������� ��� ����������� gdb, �������
gdb myprog
�� ������� ��������� ����������� GDB:
(gdb)
��� ����� �������, �� ����������� �������� ��������� ���������. ��� ������ ����������, ����� ������������ � ��������� ��������� gdb.
����� GDB �����������, ���� ��������� � ��� ��� �� �����������; �� ������ ���� �������� GDB, ����� �� ���������. ��� ������ ��������� ������������������ � �������� ����������, GDB ���� ������������ ������ �������� ��������� � ������� ������������ ������� - ���� ������ � ���������, ��� ��������� �������, ���� ������, ���������� ����� �������, � ������� ��������� �������, ���� ������ � ������� ������� � �.�. ����� ������������ ������ ``������� ����'', ����� ��������� �� ����� ��������.
��� ������ ��������� ��������� �����������, �� ������ ������������ ��������� �������.
help command
������� ������� �������� ������� GDB. ������ help ������ ������ ���������
�������� �������.
run command-line-arguments
��������� ���� ��������� � ������������� ����������� ��������� ������. GDB
���������� ���������� ���������, � ������� ���������� ��������� � �������
run �������� � ������������� ���� ����������.
where
������� ������ - ������� ������� �������, ������������ �� ��������� ��������� � ������� �����. ��������� �������� ������� bt.
up
���������� ������� ���� ���, ����� GDB ������������ �����, �� ��������
��������� ����� ������� ����. ����� ����� ���� ��������� ����� ����� �
������������ ������� - �����, ��� ������� �� �������� �������� ���,
��������, � ��������� �����-������. ��� ����� ������������ ��������� ������
up, ����� ������� � ����� ���������, ������� ���� ��������� ���������.
down
���������� ������, �������� up.
print E
������� �������� E � ������� ���� ���������, ��� E �������� ���������� C++ (������ ������ ����������). ������ ��� ��� ������������� ���� �������, GDB �������� �� ���������� ��� ������� ������. ��������,
(gdb) print A[i] $2 = -16
(gdb) print $2 + ML $3 = -9
�������� ���, ��� �������� A[i] � ������� ���� ����� -16, � ��� ��� ���������� ����� �������� � ���������� ML ��������� -9.
quit
����� �� GDB.
Ctrl-c
���� ��������� �������� ����� �������� shell, Ctrl-c ���������� ���������� �� ����������. � GDB ��������� ������������������, ���� �� ���������� �� ������������.
break place
���������� ����� ��������; ��������� �������������� ��� �� ����������. ���������� ������ - ���������� ����� �������� ����� ����� � �������, ��������
(gdb) break MungeData Breakpoint 1 at 0x22a4: file main.C, line 16.
������� break main ��������� ���������� � ������ ���������.
�� ������ ���������� ����� �������� �� ������������ ������ ��������� ����:
(gdb) break 19 Breakpoint 2 at 0x2290: file main.C, line 19.
(gdb) break utils.C:55 Breakpoint 3 at 0x3778: file utils.C,
line 55.
����� �� ��������� ��������� � ��� ��������� ����� ��������, �� ������� ��������� �� ���� � �����������, ��������
Breakpoint 1, MungeData (A=0x6110, N=7) at main.c:16
(gdb)
delete N
������� ����� �������� � ������� N. ���� �������� N, ����� ������� ��� ����� ��������.
cont ��� continue
���������� ������� ���������� ���������.
step
��������� ������� ������ ��������� � ��������������� �� ��������� ��������� ��� ����������.
next
������ �� step, ������, ���� ������� ������ ��������� �������� ����� ������� (��� ��� step ������ ����� ������������ � ������ �������), �� ������ � ��� �������, � ��������� �� � ��������� �� ��������� ��������.
finish
��������� ������� next ��� ���������, ���� �� ��������� ����� ������� �������.