ГБД: Lessss; Как отследить
Я пытаюсь отследить эту программу с открытым исходным кодом под названием lessfs: и встроенную файловую систему дедупликации данных для Linux, но у меня возникают проблемы с пошаговым пошаговым использованием GDB
Уроки можно найти здесь: http://www.lessfs.com/wordpress/
Есть ли другие инструменты, рекомендованные для отслеживания больших программ с открытым исходным кодом как таковых? Исходный код содержит около 3000 строк с несколькими файлами, и я понимаю, над какой частью файлов я буду работать, но было бы здорово, если бы была программа, которая показывала мне шаг за шагом, какие методы вызывались и тому подобное, так же, как GDB
В настоящее время у меня возникли сложности с тем, как на самом деле реализовать это:
Поскольку я на самом деле не запускаю простой C-файл в GDB, а скорее группу больших C-файлов, я немного растерялся, как правильно запустить GDB, зная, что существует несколько файлов
Вот команды, которые я регулярно использую, которые можно найти здесь в этом руководстве:
http://www.linuxjournal.com/content/data-deduplication-linux
Обычные команды (без GDB)
sudo cp etc/lessfs.cfg /etc/
sudo mkdir -p /data/{dta,mta}
/// ** Выше приведены предварительные условия ** ///
/// ** Для начала Lessfs ** ///
./lessfs
sudo mklessfs -c /etc/lessfs.cfg
sudo lessfs /etc/lessfs.cfg /mnt
/// ** Тестирование ** ///
df -t fuse.lessfs
ls -a /mnt/
sudo r dd if=/dev/zero of=/mnt/test.dat bs=1M count=100
df -t fuse.lessfs
/// ** Использование GDB ** ///
Now running with GDB (I have found an idea here: https://groups.google.com/forum/#!msg/lessfs/dkXDckXYnqw/ns5NpDegL_YJ)
gdb ./lessfs
set args /etc/lessfs.cfg /fuse -d -o\ hard_remove,negative_timeout=0,entry_timeout=0,attr_timeout=0,use_ino,readdir_ino,default_permissions,allow_other,big_writes,max_read=131072,max_write=131072
(Запуск, я делаю это правильно?)
(gdb) r mklessfs /etc/lessfs.cfg
Starting program: /home/hb2/lessfs/lessfs1/lessfs mklessfs /etc/lessfs.cfg
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Inferior 1 (process 3621) exited with code 0377]
(gdb) r lessfs /etc/lessfs.cfg /mnt
Starting program: /home/hb2/lessfs/lessfs1/lessfs lessfs /etc/lessfs.cfg /mnt
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Inferior 1 (process 3633) exited with code 0377]
(gdb) r df -t fuse.lessfs
Starting program: /home/hb2/lessfs/lessfs1/lessfs df -t fuse.lessfs
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGUSR1, User defined signal 1.
0x00007ffff7386707 in kill () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) r dd if=/dev/zero of=/mnt/test.dat bs=1M count=100
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/hb2/lessfs/lessfs1/lessfs dd if=/dev/zero of=/mnt/test.dat bs=1M count=100
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGUSR1, User defined signal 1.
0x00007ffff7386707 in kill () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) next
Single stepping until exit from function kill,
which has no line number information.
Program terminated with signal SIGUSR1, User defined signal 1.
The program no longer exists.
(gdb)
Что я действительно хочу сделать, так это иметь несколько операторов print в файле lib_commons.c и выводить оттуда некоторые данные, но как мне это сделать, когда в этой программе с открытым исходным кодом объединено так много файлов?
Спасибо за ваше время,