提问人:yazukii 提问时间:11/16/2023 更新时间:11/16/2023 访问量:52
调试器和实际程序的行为不同 [已关闭]
Debugger and actual program doesn't behave the same [closed]
问:
我正在开发我自己的 shell 实现(与某人一起)这是 git,因为有很多文件可以制作一个最小的、可重现的示例。无论如何,该代码在我伴侣的机器 (Linux) 上完美运行,但在我的机器 (macOS) 上,由于我输入 2 个命令后出现双重释放,它崩溃了。因此,为了找出原因和位置,我启动了调试器(Clion),现在它在请求我的输入(readline)之前会出现段错误。因此,我们现在有三种不同的行为,无论是在他的机器上运行,还是在我的机器上运行,都可以使用调试器。使用调试器逐步查看,它表明它段错误的原因是因为在解析 envp 以将环境变量放在链表中时,envp[0] 没有值: .但是,如果不是使用调试器查看 envp[0],而是在没有调试器的情况下从终端启动程序,我会得到 .因此,无论我在有或没有调试器的情况下启动,envp[0] 不仅是一个不同的变量,而且是 envp[36] 并且它有一个值。我还尝试了 lldb 进行调试,认为 Clion 有问题,但我遇到了与 CLion 调试器相同的问题。key
value
printf("%s\n", enpv[0]);
COLORTERM=truecolor
_P9K_SSH_TTY
_P9K_SSH_TTY=/dev/ttys000
答: 暂无答案
评论
"... it crashes because of a double free ..."