我可以在 WSL(Ubuntu 22.04 LTS) 上执行我的项目,但无法调试我的项目。 CLion 安装在 Windows 10 上。
错误信息如下。
com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException: Warning:
Cannot insert breakpoint 3.
Cannot access memory at address 0x806be6e
Process finished with exit code -1
我期待您明智的答复。 谢谢你。
您使用的是 wsl 版本 1 还是 2?我在 wsl 1 上遇到了和你一样的问题。我通过将 wsl 升级到 wsl 2 解决了这个问题。
要查看您的 Linux 发行版是否设置为 WSL 1 还是 WSL 2,请使用命令:
wsl -l -v
。
要更改版本,请使用命令: wsl --set-version <distro name> 2
替换为您要更新的 Linux 发行版的名称。例如,wsl --set-version Ubuntu-20.04 2
会将您的 Ubuntu 20.04 发行版设置为使用 WSL 2。
如果升级过程中出现错误,请参考微软官方文档。 这是链接
警告信息
Cannot insert breakpoint 3.
Cannot access memory at address 0x806be6e
直接来自gdb,而不是CLion。尽管我认为他们可以清楚地指出这一点。
虽然这个 gdb 问题是指 WSL 的一个已知且未解决的问题:[WSL1]升级到 22.04 后无法调试任何内容
我把这个问题的简要描述摘录如下:
这个问题的真正原因是WSL1缺少/proc/*/mem文件,旧版本的gdb在读取/proc//mem失败时会回退到使用ptrace。 但在 2021 年 7 月之后,Gdb 禁用了此类回退,并始终假设 /proc//mem 可用,因此 Ubuntu 22.04 上的 gdb 无法访问 WSL1 下的内存。
一个简单的解决方案是:
只需下载 GDB 13.2 tarball,构建它,并替换系统中的旧 gdb。
> ./configure && make && make install