我用MSYS2 MINGW64编译器构建了neovim 。它建造得很棒。但是构建脚本强制我从一个普通的shell (cmd/pwsh)构建它。
# These are native MinGW builds, but they use the toolchain inside
# MSYS2, this allows using all the dependencies and tools available
# in MSYS2, but we cannot build inside the MSYS2 shell.因为它是从Windows外部构建的,所以可执行文件中的调试信息被设置为本地MSYS2文件系统,例如F:\projects\neovim\。所以,现在当我从MSYS2 shell内部调用gdb时,除了源代码清单之外,大多数东西都工作得很好。list命令告诉我文件名和行号,但没有告诉我实际的代码。
我从本地shell (pwsh)从MSYS2/MINGW64bin目录运行gdb,从那里我可以看到源代码清单。所以我几乎可以肯定问题出在使用unix文件系统的MSYS2上,例如/f/projects/neovim。
由于一些个人原因,我不得不使用MSYS2 shell中的gdb。我不能从本机Windows shell使用gdb。本机shell不能很好地与我的gdb配置一起工作,gdb配置是为我的Linux环境构建的,并且使用gef。
那么,有没有办法在MSYS2中将源代码目录设置为Windows风格的会话?或者我可以在构建项目时将源代码目录设置为MSYS2样式?
发布于 2021-11-11 18:32:05
GNU有跨平台的工具链。您可以使用这些工具来(某种程度上)为其他平台构建和调试程序。为了简单起见,我们将只关注gcc和gdb。
gcc和gdb都有跨平台的版本,所以你可以在Linux/Windows上编译Windows/Linux上的C程序。这些GNU工具有称为host和target的编译参数。这样,你就可以编译出运行在Windows系统上的gcc/gdb,编译/调试Linux系统下的程序。
mingw64 gdb将target和host都设置为x86_64-w64-mingw32。因此,它可以在Windows系统上运行,并能调试Mingw-w64工具链编译的程序。
另一方面,Msys2 gdb将目标和主机设置为x86_64-pc-msys。因此,它只能在msys系统上运行,这意味着您必须从Msys2外壳内部调用它(否则它将找不到cygwin.dll,并且无法正常执行,如果它找到的话)。此外,它只能调试为msys系统编译的程序。
简而言之,要调试由Mingw-w64工具链编译的程序,请使用mingw64 gdb。
https://stackoverflow.com/questions/69491308
复制相似问题