我正在尝试调试使用Go in eclipse编写的程序。我可以非常一致地设置和命中断点,但是我无法查看变量的内容。当我开始调试程序时,我总是在控制台上收到以下错误。
警告:文件“/usr/local/go/src/pkg/runtime/runtime-gdb.py”自动加载已被“自动加载安全路径”设置为“$ debugdir:$ datadir” /自动加载”。 要启用此文件的执行添加 add-auto-load-safe-path /usr/local/go/src/pkg/runtime/runtime-gdb.py 行到您的配置文件“/home/johnlawrie/.gdbinit”。 要完全禁用此安全保护添加 设置自动加载安全路径/ 行到您的配置文件“/home/johnlawrie/.gdbinit”。 有关此安全保护的详细信息,请参阅 GDB手册中的“自动加载安全路径”部分。例如,从shell运行: info“(gdb)自动加载安全路径”
认为问题可能是由错误消息引起的,我按照说明将条目放入我的.gdbinit文件中。但是,每次运行时都会收到相同的信息,好像我什么也没做。这是我的/home/johnlawrie/.gdbinit文件的内容
add-auto-load-safe-path /usr/local/go/src/pkg/runtime/runtime-gdb.py
要使此更改生效,我需要做些什么?我已经尝试注销并重新登录。
谢谢, 约翰劳里
答案 0 :(得分:1)
它确实了解了发生了什么。当从Eclipse / CDT启动gdb时,它以选项-nx启动,这意味着它不会在主目录中加载.gdbinit。
我能够通过创建一个.gdbinit文件作为我工作区中src,bin和pkg目录的对等文件并向其添加以下行来实现此功能
set auto-load safe-path /usr/local/go/
答案 1 :(得分:0)
它应该是add-auto-load-safe-path /usr/local/go/src/pkg/
,而不是脚本的路径。
另请注意,gdb并不适用于Go,特别是v1.3。
GDB不了解Go程序。堆栈管理, 线程和运行时包含的方面与 执行模型GDB期望他们甚至可以混淆调试器 当程序使用gccgo编译时。因此,尽管如此 GDB在某些情况下很有用,它不是一个可靠的调试器 对于Go程序,特别是大量并发的程序。而且,它是 Go项目不是解决这些问题的优先事项 难。简而言之,下面的说明只能作为一个 指导如何在工作时使用GDB,而不是成功的保证。