Я отлаживаю C программу с помощью GDB. У меня есть массив, значения которого обновляются много раз (чуть меньше 4.000). Я хочу записать это значение в отдельный файл для каждой итерации.
Я пытался задать имя файла журнала непосредственно в файле GDB:
break test.c:95
commands
silent
# Set the logging file
set $_file=(char*)malloc(64)
call snprintf($_file, 64, "~/path/to/logging/file_%04d.txt", i) # i is the for variable
set logging file $_file
call free($_file)
set logging redirect on
set pagination off
set logging overwrite on
set logging on
set $_data=array
set $_x=0
while ($_x<2000)
set $_y=0
while ($_y<2000)
printf "%f ", $_data[$_x][$_y]
set $_y++
end
printf "\n"
set $_x++
end
# Log default setup
set logging off
set logging redirect off
set logging overwrite off
set pagination on
continue
end
Но GDB создал файл $_file
в моем рабочем каталоге вместо чтения значения переменной.
Затем я попытался поместить имя файла, в котором я хочу записать вывод, в переменную fileName
в моем коде (также с snprintf
). И результат тот же, файл fileName
создается в моем рабочем каталоге.
Наконец, я попытался поместить код отладки в функцию gdb и дать fileName
в качестве аргумента функции, но, как и ранее, он не интерпретирует строку.
Мой вопрос С помощью GDB, как я могу использовать значение C -строки в качестве имени файла журнала?