Помогите пожалуйста найти ошибку, почему программа из документации вылетает с ошибкой "Process terminated with status 1".
Ошибка происходит уже в процессе выполнения программы.
При этом в программе есть такой код:
================================================================
if(argc != 2) {
fprintf(stderr, "usage: packbox num, where num is 1, 2, or 3.\n");
/* Очищаем поток выхода GTK и выходим со статусом 1. */
exit(1);
}
================================================================
Но тогда в описании ошибки должна быть строка "usage: packbox num, where num is 1, 2, or 3.\n", но ее нет.
Логи не помогли мне найти место ошибки. Подскажите плз где мне искать ошибку. Вот логи, которые выдает CodeBlocks при компиляции и выполнении программы.==================================================================
-------------- Сборка: Debug in Packing_Widgest (compiler: GNU GCC Compiler)---------------
mingw32-gcc.exe -mms-bitfields -Wall -g -IC:\prog\CodeBlocks\GTK\include -IC:\prog\CodeBlocks\GTK\include\gtk-2.0 -IC:\prog\CodeBlocks\GTK\include\cairo -IC:\prog\CodeBlocks\GTK\include\gdk -IC:\prog\CodeBlocks\GTK\include\glib-2.0 -IC:\prog\CodeBlocks\GTK\lib\glib-2.0\include -IC:\prog\CodeBlocks\GTK\include\pango-1.0 -IC:\prog\CodeBlocks\GTK\lib\gtk-2.0\include -IC:\prog\CodeBlocks\GTK\include\atk-1.0 -IC:\prog\CodeBlocks\GTK\include\gdk-pixbuf-2.0 -c C:\work\GTK\Packing_Widgest\main.c -o obj\Debug\main.o
mingw32-g++.exe -LC:\prog\CodeBlocks\GTK\lib -o bin\Debug\Packing_Widgest.exe obj\Debug\main.o -lgtk-win32-2.0 -lgobject-2.0 -lglib-2.0 -mwindows
Output file is bin\Debug\Packing_Widgest.exe with size 50,73 КБ
Process terminated with status 0 (0 minute(s), 20 second(s))
0 error(s), 0 warning(s) (0 minute(s), 20 second(s))
-------------- Запустить: Debug in Packing_Widgest (compiler: GNU GCC Compiler)---------------
Проверка наличия: C:\work\GTK\Packing_Widgest\bin\Debug\Packing_Widgest.exe
Выполняется: "C:\work\GTK\Packing_Widgest\bin\Debug\Packing_Widgest.exe" (в C:\work\GTK\Packing_Widgest\.)
Process terminated with status 1 (0 minute(s), 12 second(s))
=======================================================================Я не привожу код программы, потому что он есть по адресу https://www.opennet.dev/docs/RUS/gtk_plus/x405.html. Программу я вычитал и у меня ошибок нет. Да и компилятор не выдает никаких ошибок.
С уважением, Рамиль.
> Подскажите плз где мне искать ошибку.В stderr
Packing_Widgest.exe > logs.txt
запусти через strace или в отладчике
> запусти через strace или в отладчикеПосмотрел в отладчике. Там действительно выполняется случай с проверкой аргументов. Но я пока не понимаю, какие аргументы нужно передавать в программу. И зачем?
>> запусти через strace или в отладчике
> Посмотрел в отладчике. Там действительно выполняется случай с проверкой аргументов. Но
> я пока не понимаю, какие аргументы нужно передавать в программу. И
> зачем?Что вообще должна эта программа делать? Забей ей в параметры 1,2 или 3 как она просит (packbox num, where num is 1, 2, or 3) и посмотри что будет. Ей нужен только один аргумент.
>>> запусти через strace или в отладчике
>> Посмотрел в отладчике. Там действительно выполняется случай с проверкой аргументов. Но
>> я пока не понимаю, какие аргументы нужно передавать в программу. И
>> зачем?
> Что вообще должна эта программа делать? Забей ей в параметры 1,2 или
> 3 как она просит (packbox num, where num is 1, 2,
> or 3) и посмотри что будет. Ей нужен только один аргумент.Это программа из документации CTK+ по адресу https://www.opennet.dev/docs/RUS/gtk_plus/x405.html и должна продемонстрировать как выводятся кнопки в контейнере. Но там не говориться ни о каких аргументах. Если убрать проверку количества аргументов, то выводится пустое окно. То есть какие-то аргументы там должны быть. А какие я не могу понять. Проверяется в программе их количество. По умолчанию передается один аргумент. Поэтому после проверки она заканчивает работу. Попросту вылетает с ошибкой.
Спасибо за помощь. Я разобрался, что она все-таки работает. Надо поэкспериментировать с аргументами.
И это документация, в которой все должно разжевываться. А приходится экспериментировать :)).