LINUX.ORG.RU

Почему не получается в пакетном режиме gdb направить вывод моей программы в файл?

 , ,


0

2

Есть скрипт который запускает gdb с моей программой ArabkaServer:

#!/bin/bash

echo 'set pagination off
set logging file debug_log.txt
set logging on
run > log.txt' > gdb_commands.txt

[ -e log.txt ] && rm log.txt
[ -e debug_log.txt ] && rm debug_log.txt
gdb -batch -x gdb_commands.txt ArabkaServer
Файл log.txt создается но всегда пустой. Вывода моей программы нигде нет. Тем не менее моя программа работает потому что принимает входящие подключения и видимых ошибок нет. Просто не видно лога программы.

Если убрать " > log.txt" то вывод моей программы видно в терминале.

«2>&1» в конце не помогло. Пробовал по всякому. Хотя он не нужен так как моя программа выводит данные на stdout функцией printf.

Команды
gdb -batch -ex 'run > log.txt' ArabkaServer | tee debug_log.txt
gdb -batch -ex run ArabkaServer | tee debug_log.txt
тоже не направляют вывод моей программы в файл. В debug_log.txt видно только вывод от gdb.

Операционная система Fedora 24.



Последнее исправление: graywolf (всего исправлений: 1)

Обычно такая проблема возникает от того, что если stdout программы не является терминалом, по умолчанию включается кеширования вывода в C-библиотеке. Помогает fflush, std::flush и т.п.

GPFault ★★
()
Ответ на: комментарий от GPFault

Да, помог вызов fflush(stdout) после printf. Огромное спасибо.

graywolf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.