在这里放一些写程序时报的一些错(或者配置环境之类的很杂的问题),这样下次遇到了可以直接来这里看:

按照语言分类,每个错误前面会有发生的时间。

cpp

用 thread 创建线程,并且函数是非静态时

2022/6/20

如果用 std::thread() 创建线程,并且传入函数指针是非静态的,需要这么写:

thread(&class_name::func_name, this, arg1, arg2, other_args...);

因为对于每个实例,这个函数是不一样的,所以只有传入 this 指针,执行这个线程时才知道具体是执行哪个实例的函数。

其他

编译 riscv 工具链时,因为没有安装 curses,编译出的 riscv64-unknown-elf-gdb 没有 tui 模式

2022/7/12

今天太无语了,本来花了好久时间编译,然后准备打开 qemu 和 riscv64-unknown-elf-gdb 单步 xv6 的内核,结果输入一个 layout split,居然告诉我 Undefined command: "layout". Try "help".

然后又尝试在开启 gdb 时输入一个 -tui 参数,居然显示 riscv64-unknown-elf-gdb: TUI mode is not supported

网上查了一圈之后发现是因为没有安装 curses,但是为啥我别的 gdb 就可以啊??

于是就只能下载 curses 之后重新编译一遍了,而且这个编译速度贼慢。。。。

之后终于能成功使用 layout 了。

vscode

WSL 环境下使用 vscode 误删除文件后在 windows 回收站中找不到

这应该是一个 bug?(见这个链接)。如果在 windows 环境下的 vscode 中删除一个文件,被删除的文件会自动被移动到回收站,不过 WSL 下相当于直接 rm 了,不可恢复。

这时候就需要用些奇怪的方法了,我们知道 vscode 有个很好的功能叫时间线(timeline),通过这个功能可以查看到以前版本的文件。虽然我们把文件删除了没法查看时间线,但是缓存还是在的,在 WSL 中,这些缓存存在 /root/.vscode-server/data/User/History 这个文件夹中。不过文件名全都是乱码,可能需要花点时间找。

最后感谢 stackoverflow 这个回答 下 “@iutlu” 的评论,要不然今天中午写的东西就要重写一遍了。