Я пишу программу для реализации алгоритма максимального потока Dinic по сети.Сети могут быть написаны вручную или загружены из файла с использованием перенаправления stdin.Я был в состоянии использовать GDB для отладки программы с небольшими файлами (около 30 строк), но у меня возникают проблемы, когда я пытаюсь отладить программу с большими файлами (> 1000 строк).Сам код выглядит так:
uint32_t read_lines = 0;
while(!feof(stdin))
{
err = fscanf(stdin, "%u %u %u\n", &n1, &n2, &c);
if (err != 3)
{
printf("read_lines=%u\n", read_lines); /*for debugging purposes*/
}
read_lines += 1;
/* write to debug file */
fprintf(debug, "line %u: %u %u %u\n", read_lines, n1, n2, c);
}
Если я запускаю программу без GDB, она запускается, не в порядке, так как генерирует ошибку сегментации (именно поэтому я пытаюсь использовать GDB), но этопроходит через эту часть «разбора» входного файла (и записи его в выходной файл отладки).Однако, если я набираю:
gdb --args ./dinic --mode=NUM --verbose=LOW
(gdb) b 61
(gdb) run < tests/numterc.in
, я получаю:
(gdb) Program exited with 01 code.
, и когда я открываю файл отладки, это около 2000 строк, когда оно должно быть не более 1000, чтодлина входного файла.
Повторяю, это происходит с "большими" файлами, это работает правильно с маленькими.Вопрос в том, что я что-то упускаю при использовании gdb или это ошибка gdb?