Прошу помочь! Я только начинаю програмировать на Си в Linux, заодно и осваиваю отладчик gdb. Ниже представлен код и ошибка компилятора. Кроме этого пытаюсь поставить точку останова на функцию strcpy, но она не срабатывает. В чем причина понять не могу. Если кто-нибудь сталкивался с подобной проблемой, помогите пожалуйста начинающему программисту. Есть предположение, что не установлен какой-то пакет, но какой я не знаю.
z00t@z00t-VirtualBox:~$ gcc -g -o char_array2 char_array2.c
char_array2.c: In function ‘main’:
char_array2.c:8: warning: format not a string literal and no format arguments
z00t@z00t-VirtualBox:~$ gdb -q ./char_array2
Reading symbols from /home/z00t/char_array2...done.
(gdb) list
1 #include <b><</b>stdio.h<b>></b>
2 #include <b><</b>string.h<b>></b>
3
4 int main() {
5 char str_a[20];
6
7 strcpy(str_a, "Hello, world!\n");
8 printf(str_a);
9 }
(gdb) b strcpy
Function "strcpy" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (strcpy) pending.
(gdb) r
Starting program: /home/z00t/char_array2
Hello, world!
Program exited with code 016.
(gdb)
Всё установлено и всё работает правильно и даже программа хелловвордищая.
Просто strcpy очень опасная функция, к тому же находится её тело внутри подгружаемой, уже скомпилированной библиотеки, то есть ткнуться туда просто некуда, точка останова должна быть перед, а не на ней.
А вообще *-dev пакетики )))
По-моему так.
Жюстина, спасибо за советы, буду пробовать, если что получится отчитаюсь :) Если нет .... ну лучше чтобы получилось.
Вот с Хабра
Отправить комментарий