我正在开发一个安装系统范围键盘钩子的应用程序.当我从visual studio内部运行调试版本时,我不想安装这个钩子(否则它会挂起工作室,最终挂起系统),我可以通过检查是否定义了DEBUG符号来避免这种情况.
但是,当我调试应用程序的发布版本时,有没有办法检测它是否已从visual studio内部启动以避免同样的问题?因为我一直在处理发布版本,并且想要使用忘记切换回调试版本的调试器修复一些错误,所以必须重新启动工作室/计算机是非常烦人的.
目前我使用这样的方法来检查这种情况:
System.Diagnostics.Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
string moduleName = currentProcess.MainModule.ModuleName;
bool launchedFromStudio = moduleName.Contains(".vshost");
Run Code Online (Sandbox Code Playgroud)
我称之为"蛮力方式",这在我的设置中有效,但我想知道是否有另一种(更好的)方法来检测这种情况.
我刚刚安装了VS 2010 Beta 2,并希望使用ASP.NET MVC 2项目.我只是将一些script(alert('hello');)添加到Home控制器的index.aspx视图中,我可以看到它正在执行.但是,当我尝试设置断点时,它永远不会被击中.我也尝试使用"debugger"关键字,当我这样做时,我感到很失望"没有可用于当前位置的源代码"消息.当我尝试独立地附加到我的应用程序运行的IE进程时,我也收到此消息.
为了获得友好的脚本调试体验,我需要做些什么?(我已成功使用Firebug来调试它,但由于某种原因,我更喜欢VS调试器.)
以下是我配置的一些细节:
我在我的C++应用程序上遇到随机崩溃,它可能不会崩溃一个月,然后在一小时内崩溃10次,有时可能会在启动时崩溃,而有时可能会在运行几个小时后崩溃(或者不会崩溃)所有).
我在GNU/Linux上使用GCC,在Windows上使用MingW,因此我无法使用Visual Studio JIT Debug ...
我不知道如何继续,随机查看代码是行不通的,代码是巨大的(好的部分不是我的工作,它也有一些很多遗留的东西),我也没有有关如何重现崩溃的线索.
编辑:很多人提到......我如何制作核心转储,小型转储或其他转储?这是我第一次需要进行事后调试.
EDIT2:实际上,DrMingw捕获了一个调用堆栈,没有内存信息......不幸的是,调用堆栈对我没什么帮助,因为接近结束突然它进入了一些我没有调试信息的库(或其他东西) ,只产生一些十六进制数...所以我仍然需要一些体面的转储,提供更多的信息(特别是关于内存中的内容...具体来说,在那里给出了"访问冲突"错误的地方)
此外,我的应用程序使用Lua和Luabind,可能错误是由.lua脚本引起的,但我不知道如何调试它.
很难跟踪iPad应用程序中的崩溃.这个困难的真正原因是当应用程序失败时没有错误或堆栈跟踪.它就像Keiser Soze一样消失,"就像那样,噗.他走了."
我已经在模拟器和设备上复制了崩溃.设备日志为零,控制台中没有任何内容,等等.
我知道在崩溃期间,一些CoreGraphics操作正在后台线程中发生.通常,三个左右的NSOperations正在踢一些图像混合.
混合包含CGContext*调用(DrawImage,SetBlendMode,SetAlpha等).NSOperation回调主线程中的委托来处理图像并将其设置为UIImage,因此它不应该是UI主线程冲突,但此时我不打算任何折扣.
我是否缺少一些Xcode技巧来追踪究竟发生了什么?或者至少可以更好地了解问题所在?
编辑我已经在仪器中运行应用程序跟踪内存使用情况,看到它在2MB左右稳定稳定.所以,不要认为这是一个记忆问题.但经过考虑,这块岩石稳定2MB似乎异常低落.有没有机会仪器没有获得CoreGraphics分配?
在Visual Studio中的断点中进行调试时是否有编辑代码的选项.当我停止时,所有文件似乎都被锁定以进行编辑.
有没有办法改变这种行为?它可以在Eclipse中实现
编辑:尝试所有以下建议后(包括移动它从发布到调试),现在它告诉我,我没有正确的微软Office版本和调试不能在调试模式下启动.但是,在发布模式下,它正在运行.我正在尝试调试outlook加载项.
当我用Visual Studio 编写C/C++时,我经常使用__asm nop;命令插入一个noop代码,以便有一些东西可以打破.例如:
if (someCondition())
{
__asm nop;
}
Run Code Online (Sandbox Code Playgroud)
当条件发生时我不知道该怎么做,但我想停止执行并检查当前状态.有时候someCondition()很简单就可以创建一个条件断点,但条件断点会大大减慢执行速度,但并不总是可行.
现在,在C#中,我通过调用System.Diagnostics.Debugger.Break()或直接进入调试器System.Diagnostics.Debugger.Launch().
现在我被迫编写Java,直到现在我找到了没有比做更好的替代方案System.out.println("bla-bla")并在那里设置断点.同样,请考虑条件断点不可行的情况.
所以,我不知道-是有一个__asm nop或System.Diagnostics.Debugger.Break()Java中的选择?
有没有办法在ipython中进入函数的第一行.我想象的东西看起来像:
%step foo(1, 2)
Run Code Online (Sandbox Code Playgroud)
它运行ipdb并在第一行设置断点foo.
如果我现在想要这样做,我必须转到函数的源代码并添加import ipdb; ipdb.set_trace()一行.
所以我从命令行使用CURL来调用我的PHP网站:
curl -s "url"
Run Code Online (Sandbox Code Playgroud)
我的问题是......是否可以修改此命令,以便在从CURL调用站点时可以触发xDebug(与IDE结合使用(我使用Jetbrains PHPStorm))
也许操纵GET变量?
我正在努力学习AngularJS.作为其中的一部分,我想学习使用端到端测试.目前,我有一个这样的目录结构:
node_modules
.bin
...
protractor
...
node_modules
.bin
adam-zip
glob
minijasminenode
optimist
saucelabs
selenium-webdriver
protractor
config.js
src
tests
test.e2e.js
Run Code Online (Sandbox Code Playgroud)
我的config.js文件如下所示:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
'browserName': 'chrome'
},
specs: [
'../src/tests/test.e2e.js'
],
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
}
};
Run Code Online (Sandbox Code Playgroud)
test.e2e.js如下所示:
'use strict';
describe('My Sample', function () {
driver = protractor.getInstance();
beforeEach(function () {
driver.get('#/');
});
it('My First Test', function () {
message = "Hello.";
expect(message).toEqual('World.');
});
});
Run Code Online (Sandbox Code Playgroud)
当我尝试使用量角器运行我的端到端测试时,我从命令行运行以下命令:
node_modules\.bin\protractor protractor\config.js
Run Code Online (Sandbox Code Playgroud)
当我运行该命令时,我收到以下错误:
C:\Src\MyProject\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1542
throw error;
^
Error: ECONNREFUSED …Run Code Online (Sandbox Code Playgroud) 环境:Swift,Xcode 6
如何获取Swift数组的数据项列表(po)?
以下是用于构建简单数组的Swift代码:
kindArray += "Two"
kindArray.append("Two")
var myStringArray: String[]
myStringArray = ["One", "Two"]
myStringArray.append("Three")
myStringArray += "Four"
var firstItem = myStringArray[0]
Run Code Online (Sandbox Code Playgroud)
这是调试输出:
(lldb) po firstItem
"One"
(lldb) po kindArray
Some
{
Some = 0x0ffb0000 {}
}
(lldb) po myStringArray
size=1
{
[0] = {
core = {
_baseAddress = Builtin.RawPointer = 0x00000008
_countAndFlags = 34718
_owner = Some {
Some = (instance_type = Builtin.RawPointer = 0x80000003)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的只是'一些'和'大小'.
我想展示一下内容.