Проблема в компиляторе или отладчике?

Изображение пользователя z00t.

Прошу помочь! Я только начинаю програмировать на Си в 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)

0
Жюстина - 29 Сентябрь, 2012 - 20:29
Изображение пользователя Жюстина.

Всё установлено и всё работает правильно и даже программа хелловвордищая.

Просто strcpy очень опасная функция, к тому же находится её тело внутри подгружаемой, уже скомпилированной библиотеки, то есть ткнуться туда просто некуда, точка останова должна быть перед, а не на ней.

А вообще *-dev пакетики )))

По-моему так.

0
z00t - 29 Сентябрь, 2012 - 21:00
Изображение пользователя z00t.

Жюстина, спасибо за советы, буду пробовать, если что получится отчитаюсь :) Если нет .... ну лучше чтобы получилось.

0
RA9OAJ - 1 Октябрь, 2012 - 09:32
Изображение пользователя RA9OAJ.

Уважаемый, надо в конце функции int main() забабахать return 0 (раз уж она int main()), что скажет системе о том, что программа завершилась нормально и вернула допустимый код завершения.

Да, Жюстина правильно все описала, только пакет нужен не dev (он уже установлен, раз вы include библиотеки делаете), а dbg для отладчика (dev - для просмотра исходника при отладке). Например, libc-dbg.

0
Unit_abs - 1 Октябрь, 2012 - 11:45
Изображение пользователя Unit_abs.

Вот с Хабра

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры