我想实现一种在代码中记录项目版本的方法,以便在测试时使用它并帮助跟踪错误.似乎使用的最佳版本号只是Subversion的当前版本号.有没有一种简单的方法可以将这个数字挂钩到(我的情况下是C++)头文件或其他什么东西,然后我可以在代码中找到它?我猜这是一个帖子提交钩子什么的?
有没有人有任何实现这个的经验(请分享代码,请?),或者可以提出更好的选择?谢谢.
Java程序如何确定它是否在调试模式下运行?
应用程序在常规"全速"模式下的行为应与"调试模式"(在附加调试器时,在调试模式下运行时)略有不同.应用程序通过TCP与另一台计算机,另一个进程或其自身进行通信.我的同事希望我们Socket.setSoTimeout(1000)默认使用,以便从套接字读取最多可以阻止1秒钟.调试时,这当然是不够的,应用程序停止工作.所以解决方案是设置SO_TIMEOUT更高,但只是在调试模式(例如:无限制).现在,我并不总是设置断点或者不想使用调试构建,我可以自己设置"debug"属性.有时我会附加调试器(远程调试).我主要使用Eclipse,所以在那里工作的解决方案是可以的.
可能的答案包括:
要确定是否在调试模式下运行,请使用以下方法java.lang.management.*或javax.management.*...
您的同事因X原因错误SO_TIMEOUT,默认情况下您不应设置为1秒.
我知道系统属性方法,但我将问题留待解决我原来的问题.
我有一个使用性能计数器的应用程序,已经工作了几个月.现在,在我的开发机器和另一台开发人员机器上,当我调用PerformanceCounterCategory.Exists时它已经开始挂起.据我所知,它无限期地挂起.我使用哪个类别作为输入并不重要,使用API的其他应用程序表现出相同的行为.
调试(使用MS Symbol Servers)显示它是对挂起的Microsoft.Win32.RegistryKey的调用.进一步的调查表明,这条线是挂起的:
while (Win32Native.ERROR_MORE_DATA == (r = Win32Native.RegQueryValueEx(hkey, name, null, ref type, blob, ref sizeInput))) {
Run Code Online (Sandbox Code Playgroud)
这基本上是一个尝试为性能计数器数据分配足够内存的循环.它开始于size = 65000并进行一些迭代.在第4次通话中size = 520000,Win32Native.RegQueryValueEx挂起时.
此外,相当令人担忧的是,我在PerformanceCounterLib.GetData的参考源中找到了这条评论:
// Win32 RegQueryValueEx for perf data could deadlock (for a Mutex) up to 2mins in some
// scenarios before they detect it and exit gracefully. In the mean time, ERROR_BUSY,
// ERROR_NOT_READY etc can be seen by other concurrent calls (which is the reason for the
// wait loop and …Run Code Online (Sandbox Code Playgroud) 我可以附加调试器并让它中断 - 但它找不到.cs文件,我认为LinqPad删除它作为其构建的一部分.. 8-(
我刚从Netbeans转到Eclipse.在Netbeans中,我可以开箱即用地调试Playframework应用程序.但是,在Eclipse中,为了调试Web应用程序(特定的Playframework应用程序),似乎很难配置它.
就像玩!文档,
主启动器只能与Run As eclipse命令一起使用.然后,您可以使用"调试为"连接"连接JPDA启动程序"以随时启动调试会话.停止调试会话不会停止服务器.
但是,我无法在"Debug As"(我正在使用Eclipse Classic 3.7.0)中看到"Connect JPDA launcher".我搜索过JPDA(我是Java的新手,不知道"主要启动器"和JPDA,然后在http://javarevisited.blogspot.com/2011/02/how-to中配置远程调试作为指示 -setup-remote-debugging-in.html 但是它返回了一个错误:
无法连接到远程VM.拒绝连接.连接被拒绝:连接
我搜索过并找到了一些建议:
1.)编辑catalina.bat并添加行:set JPDA_TRANSPORT = dt_socket ... set JPDA_ADDRESS = 8000 AND 2.)编辑startup.bat调用"%EXECUTABLE%"jpda start%CMD_LINE_ARGS%
实际上我并不清楚这一点,我想这是配置Tomcat.但是,我正在使用Play!默认服务器,检查application.conf并确保它正在侦听JPDA的端口9000和8000.
当然,我在调试之前启动了Play应用程序,我可以通过端口9000正常访问应用程序.我使用的是没有管理员权限的Win 7.
你有关于调试Play的详细指南吗?在Eclipse中?
我有一个内置node.js的应用程序,我使用节点检查器进行调试.但由于这个原因,这很难:
你如何使用节点检查器真正调试node.js?
有关如何使用node.js的视频非常具有误导性,因为一切都在模块中...
http://www.youtube.com/watch?v=AOnK3NVnxL8
或者这个脚本已经加载到第一个脚本中
http://www.youtube.com/watch?v=HJOH0-g8f6E&feature=mfu_in_order&list=UL
没有人能回答这个问题?:■
在创建debug .apk的s(<project-name>-debug.apk)时,是否可以指定自己创建的调试密钥库的位置ant debug?我只看到指定发布密钥库的位置的可能性.
我想在多台PC上共享调试密钥库,而不是将它们复制到放在".android"目录中的那个.调试密钥库可以例如驻留在源代码库中.但是我需要一种方法来告诉ant在哪里找到调试密钥库.
当我使用Sprite Kit创建一个新的OS X"Game"项目,并在任何地方设置断点时,我可以看到变量值就好了:

然后我更改代码以导入我自己的框架(TilemapKit),这是一个纯粹的Objective-C框架:
import SpriteKit
import TilemapKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
print("dang!")
}
}
Run Code Online (Sandbox Code Playgroud)
没有其他变化.我甚至没有使用任何TilemapKit代码.当断点触发时,我看到:

就观察变量值而言,整个项目停止可调试.这种行为完全一致.没有框架导入,我可以再次调试.
由于我使用Xcode 7 beta(7A121l)和OS X 10.11开发人员预览版,我知道这可能只是一个(临时)错误.
命令行Tiles设置为使用Xcode 7.0版本btw.我尝试在框架目标中启用模块,确保部署目标相同(10.11),禁用符号剥离.我在其中添加了一个Bridging Header和#imported TilemapKit框架(在这种情况下删除Swift导入仍然会给我不可调试的应用程序,所以我导入框架的方式和位置似乎并不重要).
有没有人建议什么可能导致这种行为以及我如何解决这个问题 - 或者至少我如何尝试缩小问题?
罪魁祸首是否更有可能与项目的框架构建设置相关联?我是否需要在应用程序项目中启用某些内容以使其与ObjC框架兼容?(我已在其他链接器标志中获得-ObjC)
更新:
我跑进po self调试控制台,发现了这个通知:
<built-in>:3:6: error: module 'TilemapKit' was built in directory '/TilemapKit.framework' but now resides in directory './TilemapKit.framework'
#define __clang_major__ 7
^
missing required module 'TilemapKit'
Debug info from this module will be unavailable in the debugger.
Run Code Online (Sandbox Code Playgroud)
为什么框架构建目录发生了变化?那为什么会这么重要以及如何解决这个问题?
PS:新的ObjC应用程序中的相同框架可以调试得很好.