译者|刘汪洋审校|重楼很多年前,我在维护一个数据库驱动的系统时遇到了一个奇怪的生产环境的bug。我读取的列有一个空值,但是代码中不允许这样,而且也没有地方可以让这个值为空。数据库严重损坏,我们没有任何线索。虽然有日志,但是由于隐私问题,关键信息并未被打印出来。即使我们能打印,我们怎么知道该找什么呢?应用程序出错不可避免。我们努力减少出错,但总是还会出错。我们还有另一项工作,它并未得到足够的关注:故障分析。有一些最佳实践和常见方法,最著名的就是日志记录。我曾多次说过,日志其实是预知性的调试,但是我们该如何创建一个更容易调试的应用程序呢?我们应如何构建系统,以便当它出现类似的错误时,我们能知道出了
我正在使用IntelliJIDEA8调试一些Java,但这个问题可能适用于所有Java调试器。在变量列表中,它们显示为:myVariable={some.package.SomeClass@12345}我很好奇类名后面的数字。确切的数字是多少?如果两个变量引用的是同一个底层对象,那么两个变量的编号是否相同?提前致谢。 最佳答案 即JVM上报的objectId,详情请见JDWPspecification.UniquelyidentifiesanobjectinthetargetVM.Aparticularobjectwillbeide
记录一下学习Go遇到的一些小问题。问题描述在go项目中,导入一个包名不等于其包导入路径名的最后一段的包时候发生报错:原因分析:认为是import的包名不对。修改import至与go.mod的声明一致:import"git.woa.com/trpcprotocol/test/helloworld结果还是报错:解决方案:所以认为包名跟其文件路径是直接相关的,导入的时候引入的包名其实是需要提供其包所在git上的路径的。最后修改成:import"git.woa.com/***/helloworld/stub/git.woa.com/trpcprotocol/test/helloworld"module
我是Jboss的新手,但我有多个Web应用程序,每个应用程序都使用spring-hibernate和其他开源库和portlet,所以基本上现在每个war文件都包含那些jar文件。如何将这些jar移动到一个公共(public)位置,这样我就不必将它们放在每个war文件中?我猜位置是server/default/lib,但我不确定。此外,将这些jar放在WEB-INF/lib与JBOSS/server/default/lib有何不同?我会遇到任何类加载器问题吗?我还有静态数据存储在静态字段中,例如Singleton,这些数据会在所有WAR文件中共享吗? 最佳答案
我正在使用Netty(通过Ning异步HTTPlibrary)通过HTTP检索文档。这会在控制台产生大量的调试输出,如下所列的单个文档请求。有人知道怎么关闭吗?我真的不需要看到这个输出。我是从Scala打电话的,如果这有什么不同的话。15:07:14.273[run-main]DEBUGc.n.h.c.p.n.NettyAsyncHttpProvider-NoncachedrequestDefaultHttpRequest(chunked:false)GET/api/search.json?q=fooHTTP/1.1Host:www.documentcloud.orgConnectio
在执行以下代码时,使用Android的调试器时我有一个奇怪的行为。变量value在被小部件初始化后立即消失。我将其移至watch,但它显示“找不到局部变量值”。无论我把变量放在哪里,在for循环之前还是在里面,无论如何它的行为都是一样的。我还打印了变量,正如您在代码中看到的那样,它显示"valueisnull"但是当我通过if(value==null)检查它时,它没有尝试将其转换为整数时停止并最终抛出错误。代码:for(inti=0;i 最佳答案 你使用混淆器吗?如果是,那可能是问题所在-用禁用它-dontobfuscate你应该把
我有一个Java应用程序有一半时间挂起,另一半时间JVM崩溃。有没有一种工具可以用来查看导致它挂起和/或崩溃的原因?我使用的是CentOS5.6 最佳答案 对于初学者,我建议JVisualVM.它与JDK一起提供,因此您只需在命令行中键入jvisualvm即可启动它。一旦启动,您就可以连接到正在运行的JVM,因此您应该能够连接到挂起的Java进程并检查堆栈转储中所有正在运行的线程以及堆的内容。其他有用的内置工具包括:jps列出正在运行的java进程的进程idjstack为指定JVM进程中的每个线程打印堆栈转储jmap为指定的JVM进
目录1.首先,确保已经安装了VueCLI,然后使用VueCLI创建一个新的Vue项目:2.在项目中安装微信小程序开发依赖:3.在项目中创建一个名为“微信小程序”的文件夹,并在其中创建一个名为“app.vue”的文件。在“app.vue”文件中,编写以下代码:4.在“block.vue”文件中,编写以下代码:5.在项目根目录下,创建一个名为“main.js”的文件,并在其中编写以下代码:6.在命令行中,运行以下命令启动开发服务器:7.打开微信开发者工具,并访问`http://localhost:8080/`。在工具中,可以查看和调试小程序的代码。要调试Vue实现的微信小程序,您需要使用微信开发者
通读Eclipse调试主题,我没有找到我的特定问题的答案。我想知道是否还有其他人看过它。我在切换到Luna后才遇到这种情况,之前我使用过Kepler和Indigo。我通常调试Tomcat,但它发生在任何一类测试应用程序上。当应用遇到第一个断点时,会显示调试View,然后我必须等待20-30秒让调试器初始化,然后代码行才会在编辑器中突出显示。从那时起,每次休息都是立即的。其他类型的缓慢是没有经历过的。在Tomcat中,任何后续请求都会很快停止。问题是当热代码替换不可行时,它经常重新启动。有人知道怎么修改吗?当时没有构建或验证过程在进行,我尝试为Eclipse分配不同数量的内存。-Xms2
我正在尝试在我的SonyEricssonK790i上调试J2ME应用程序,它是WindowsXP上的JP-7手机,具有最新的Netbeans、J2MESDK、SonySDK等。我可以通过USB连接并使用SEDeviceExplorer。当我从设备资源管理器启动我的应用程序时,它只提供一个异常名称(ArrayOutOfBoundsException)和一个包含“未知”列表的调用堆栈。有没有办法将调用堆栈转换为过程和行号?有没有一种方法可以创建调试二进制文件或任何方法来获得更多提示?我的应用程序在模拟器上启动正常。它甚至可以在手机上正常安装,但当我运行它时,它崩溃了,没有任何信息。我什至尝