gpt4 book ai didi

c - 如何使用字符串值作为日志文件名

转载 作者:行者123 更新时间:2023-12-02 03:02:28 25 4
gpt4 key购买 nike

我正在使用 GDB 调试 C 程序。我有一个数组,其值已更新多次(略小于 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 字符串的值作为日志文件名?

最佳答案

您可以使用eval将变量值插入到gdb的命令中。在您的情况下,可以通过命令将日志文件名设置为 $_file:

eval "set logging file %s", $_file

如果您想通过 gdb 内置命令将 array 转储到 fileName,您也可以使用 dump:

eval "dump value %s array", fileName

注意:转储的值是二进制的。

关于c - 如何使用字符串值作为日志文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com