如果你一直在关注我的Redox Summer of Code进度,你可能已经注意到在上一篇帖子之后出现了很长时间的中断。起初,原因是我忘了时间。我在RSoC的前几年都遵循着类似的不一致时间表,现在我把它称为每“程序员周”发布一篇博客文章的间隔,其中“程序员周”是从3天到1个月的…。
现在,没有完成的原因是我基本上完成了!没错,在过去的几周里,GDB一直在为我们提供可靠的服务,我们已经能够调试我们的动态链接器(ld.so)并发现共享库的问题。我们到了这样一个地步:令人惊叹的@bjorn3已经管理了Torun,他的第一个Ruust程序是使用他的Rustc起重机后端在Redox上编译的!
虽然很明显,如果没有gdb,我们最终会发现错误,但我愿意将足够的功劳归功于它,它值得在这里发布!
在Redox上使用gdb的最简单方法是从您的文件ystem.toml中取消gdbserver和gnu-binutils的注释,然后运行gdb-redox<;Absolutefilepath>;[args...]。它将启动我们的自定义gdbserver,并通过IPC从GDB连接到它。这样做的“缺点”是,如果您想要漂亮的符号和文件号,您必须将源代码复制到Redox。
您还可以选择启动独立的gdbserver<;绝对文件路径>;[args...],这将打开一个您可以从gdb连接到的套接字。这允许您使用您喜欢的工具(如NORMAL)从主机Linux系统连接,方法是首先运行(Gdb)target remote:64126以连接到正在运行的服务器。这种方法强制您通过网络转发:64126,这可以通过使用NET=REDIR标志启动REDOX来完成。
如果您在使用Redox时遇到问题,请发送电子邮件至[email protected],并要求提供邀请链接,加入我们的开发者聊天室。