草庐IT

DEBUGGING

全部标签

debugging - 调试 Golang 代码并将其附加到本地进程

我有一个Golang代码,我通过gobuild从它为mac创建二进制文件喜欢:构建darwinamd64myapp目前我能够运行二进制文件并查看日志。现在我想调试它,有没有办法用Goland或Intellij或VSCode调试二进制文件?使用delve的常规调试在上述所有IDE中都可以正常工作,但现在我想将它附加到我能够运行的二进制进程,如果可能的话有什么想法吗? 最佳答案 如果您使用GoLand2018.1+,您应该能够使用Run|附加到本地进程功能,它将允许您调试正在运行的二进制文件。我建议您在关闭所有优化并使用Go1.10+编

debugging - 如何调试 gRPC-Go 服务?

使用gRPC-Go无疑是构建弹性、高性能和可扩展分布式系统的好方法。我不太明白的是如何实际调试用它编写的服务。另外,HTTP/2是唯一的吗wireprotocol支持吗? 最佳答案 不确定您是否找到了解决方案...但是根据您的应用程序中有多少服务,您可以使用分布式跟踪系统来记录服务之间的调用。其中一些系统包括:齐普金(http://zipkin.io/)小巧玲珑(https://research.google.com/pubs/pub36356.html)耶格(https://uber.github.io/jaeger/)如果您使用

debugging - 为什么我的 Go 调试器不加载所有符号,导致调试器中缺少局部变量?

我已经构建了我的二进制文件:gobuild-gcflags"$gc_flags"-o./bin/grafana-server./pkg/cmd/grafana-server,其中$gc_flags是'-N-l'。当我运行此文件./bin/grafana-server并在我的调试器(Goland)中附加到它时,并非我的所有符号都已加载。此外,一些断点显示消息:nocodeat/Users/.../file.go:186我想调试的代码如下:我添加到原始项目的部分是186-199行。可以看到,执行进入了for_,..循环(第196行),说明query有数据,我们可以拉取通过repo.Find

debugging - 打印 golang 结构时如何忽略 String() 方法?

我有一个golang结构体,并创建了一个String()方法用于程序的正常运行。我现在想查看结构的全部内容。我尝试了通常的%+v格式,但它似乎使用了String()方法,而不是向我显示所有字段。如何输出原始结构数据?示例:https://play.golang.org/p/SxTVOtwVV-9packagemainimport("fmt")typeFoostruct{JekylstringHydestring}func(fooFoo)String()string{returnfoo.Jekyl//howIwantittoshowintherestoftheprogram}funcma

debugging - 如何在 Delve 中通过源文件行号设置断点?

标题几乎说明了一切。我知道如何设置的唯一方法是在程序运行期间或在breakpointmain.main之前有没有一种方法可以通过行号来做到这一点,比如breakpoint./otherfile.go:200? 最佳答案 在你的源代码类型中runtime.Breakpoint()在CLI中输入dlvtest然后continue程序将在您设置断点的代码行处停止。 关于debugging-如何在Delve中通过源文件行号设置断点?,我们在StackOverflow上找到一个类似的问题:

debugging - 如何检查失败的 `docker build` 的文件系统?

我正在尝试为我们的开发过程构建一个新的Docker镜像,使用cpanm安装一堆Perl模块作为各种项目的基础镜像。在开发Dockerfile时,cpanm会返回失败代码,因为某些模块没有安装干净。我很确定我需要apt来安装更多东西。我的问题是,我在哪里可以找到输出中引用的/.cpanm/work目录,以便检查日志?在一般情况下,如何检查失败的dockerbuild命令的文件系统?早上编辑在咬紧牙关运行find我发现/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm这可靠吗,还是我最好构建一个“裸”容器并手动运行东西,直到我拥有所有我需要的东西?

debugging - 如何检查失败的 `docker build` 的文件系统?

我正在尝试为我们的开发过程构建一个新的Docker镜像,使用cpanm安装一堆Perl模块作为各种项目的基础镜像。在开发Dockerfile时,cpanm会返回失败代码,因为某些模块没有安装干净。我很确定我需要apt来安装更多东西。我的问题是,我在哪里可以找到输出中引用的/.cpanm/work目录,以便检查日志?在一般情况下,如何检查失败的dockerbuild命令的文件系统?早上编辑在咬紧牙关运行find我发现/var/lib/docker/aufs/diff/3afa404e[...]/.cpanm这可靠吗,还是我最好构建一个“裸”容器并手动运行东西,直到我拥有所有我需要的东西?

debugging - MongoDB:mapReduce 的副作用

在我们的map-reduce作业的开发过程中,我们的MR代码独立于被map-reduce的数据生成有用的诊断数据结构。有没有一种简单的方法可以将这些数据导出到调用mapReduce的代码中或将它们保存在Mongo中?仅仅写入日志文件是非常次优的,因为(a)那里已经有很多数据,并且(b)我们的诊断信息是高度结构化的,事实上,我们希望针对它。到目前为止,我的调查表明MR数据结构是按值传递的(通过序列化),因此任何内存中的数据结构都会丢失,包括那些与“全局”范围Hook的数据结构。命名空间与主要的JS服务器端命名空间是隔离的,因此dbeval似乎无法访问它们(或者,至少,我不知道去哪里寻找)

debugging - MongoDB:mapReduce 的副作用

在我们的map-reduce作业的开发过程中,我们的MR代码独立于被map-reduce的数据生成有用的诊断数据结构。有没有一种简单的方法可以将这些数据导出到调用mapReduce的代码中或将它们保存在Mongo中?仅仅写入日志文件是非常次优的,因为(a)那里已经有很多数据,并且(b)我们的诊断信息是高度结构化的,事实上,我们希望针对它。到目前为止,我的调查表明MR数据结构是按值传递的(通过序列化),因此任何内存中的数据结构都会丢失,包括那些与“全局”范围Hook的数据结构。命名空间与主要的JS服务器端命名空间是隔离的,因此dbeval似乎无法访问它们(或者,至少,我不知道去哪里寻找)

c++ - eclipse CDT : 'can' t find a source file' while debugging

我使用Eclipse和CDT进行C++开发。但是,我不得不在源文件的路径中使用ASCII符号来成功调试我的程序。当源文件位于名称中包含非英文字符的文件夹中时,Eclipse会报错:Can'tfindasourcefileat"/home/\321\202\320\265\321\201\321\202/1.cpp"Locatethefileoreditthesourcelookuppathtoincludeitslocation.是否有任何选项可以让Eclipse进行正确的Unicode处理? 最佳答案 也许将您的代码移动到位于根目