我有一个内部构造和使用SqlConnection类的第三方库.我可以从班级继承,但它有很多重载,到目前为止我一直找不到合适的.我想要的是使用正在使用的连接字符串的参数.
有没有办法让我在.NET库核心本身设置一个断点?特别是在SqlConnection类的构造函数中,以便我可以查看堆栈跟踪并查看它实际构建的位置?
除此之外,还有其他方法可以做到这一点吗?
具体来说,我想要做的是使用Application Name参数,以便在查看连接时更容易在服务器上识别我们的应用程序.
编辑:嗯,似乎我需要更多的帮助.我想我已经启用了与符号服务器支持相关的所有内容,并且我注意到我配置的目录已经填满了包含.pdb文件的目录.但是,我无法获得SqlConnection类的实际源代码.
是否有一些明确的指导如何成功地做到这一点?
我希望能够在设置断点时跳过代码的某些部分.例如,我有一个代码块,它迭代52次以创建一副牌.这是正常工作,我宁愿不必按F11继续通过该块.反正我是否"跳过"这个以便调试器继续进行下一个方法调用?
语言和IDE是VS 2008中的C#.
我正在尝试使用带有C++的GLUT绘制一条线 - IDE是VS 2008 - 但是出现了一条错误消息:
Windows在Graphics.exe中触发了断点.
这可能是由于堆的损坏,这表明Graphics.exe或它已加载的任何DLL中的错误.
这也可能是由于用户在Graphics.exe具有焦点时按下F12.
输出窗口可能包含更多诊断信息
当然我的代码中没有任何断点这是我的代码:
#include <glut.h>
void init (void)
{
glClearColor(1.0,1.0,1.0,0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,15.0);
}//end of the function init
void lineSegment(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
// D R A W A L I N E
glBegin(GL_LINES);
glVertex2i(180,15);
glVertex2i(10,145);
glEnd();
glFlush();
}//end of the function "lineSegment"
void main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(400,300);
glutCreateWindow("N.S");
init();
glutDisplayFunc(lineSegment);
glutMainLoop();
}//end of the "Main" function
Run Code Online (Sandbox Code Playgroud)
有谁知道这个问题?
在新工作站安装Delphi 6后,我发出了断点问题.在调试模式下,环境不会触发断点,就像它们根本没有放置一样...
你有过类似的情况吗?我想原因是一些设置,但我找不到哪一个......
TnX提前!
维迪奇
我在VS 2010中创建了"当命中,打印消息"断点时.它可以工作,但它只输出到VS"输出"窗格.我可以使用我的应用程序的控制台窗口吗?
我试过了:
Debug.Listeners.Add(new ConsoleTraceListener());
Run Code Online (Sandbox Code Playgroud)
以及:
var writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);
Run Code Online (Sandbox Code Playgroud) Pydev 2.2增加了一个很棒的功能,允许我们打破异常.
我的问题是,在我访问代码之前,我从python库中获得了大量异常.
有没有办法配置PyDev只打破我的代码中引发的异常?
具体来说:我希望在异常发生时中断 - 而不是在它被捕获时
提前致谢!
有没有办法在Visual Studio里面为C代码设置一个断点#define?当我设置断点时,它未到达,其余代码继续执行.例如:
#define YY_USER_ACTION sn_yylloc.first_line = sn_yylloc.last_line =sn_yylineno; \
sn_yylloc.first_column = sn_yycolumn; \
sn_yylloc.last_column = sn_yycolumn + sn_yyleng -1; \
sn_yycolumn += sn_yyleng;
Run Code Online (Sandbox Code Playgroud)
代码是Flex生成的词法分析器,但这并不重要.
每次玩游戏时都不会发生这种情况,也许每5或10次播放一次.当游戏结束时,我从运行循环中移除我的CADisplayLink(我用它来设置游戏区域的动画,有点像Flappy Bird中的管道).然而,在少数情况下,它崩溃了.该行旁边有:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x10)
Run Code Online (Sandbox Code Playgroud)
这是代码:
func endGame(r : String) {
UIView.animateWithDuration(0.4, delay: 0.2, options: .CurveLinear, animations: {
self.scoreLabel.alpha = 0
}, completion: {
(finished: Bool) in
self.scoreLabel.removeFromSuperview()
});
self.view.userInteractionEnabled = false
reason = r
println("Game Over!!!")
//Crashes on this line
blockUpdateDisplayLink.removeFromRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
shiftDisplayLink.removeFromRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
scoreTimer.invalidate()
UIView.animateWithDuration(0.0001, delay: 0.7, options: .CurveLinear, animations: {
}, completion: {
(finished: Bool) in
self.performSegueWithIdentifier("Game Over", sender: self)
});
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉第一个CADisplayLink部分,那么无论如何它都会在第二个部分崩溃.
这是堆栈跟踪:

它与上面的"线程1"错误相同.
到底是怎么回事??
有时候Eclipse会打破像这样的点.

但是在这条线上我没有提出一个突破点,但它仍然受到打击.因此不能跳过其他断点.我该如何删除它们.
我通过visual studio 2013使用windows内核调试器,我试图在函数(nt!KiSwapContext)中停止(中断)但仅针对特定进程(0x920).
断点在没有条件的情况下工作 bp nt!KiSwapContext
我确定可以找到当前线程的进程ID dt dword poi(gs:[188h])+3B8h
我已经确认以下有条件的工作,看看我是否在正确的线程: ? poi(poi(gs:[188h])+3B8h)==0x920
但是,当我尝试设置条件断点时,无论我在if/else中放置什么,它总是会中断.所以我猜它认为表达式是无效的,只是忽略它.我已经确认,如果我确实输入了一个无效的表达式,它只会在没有警告或错误的情况下接受它,并且总是在断点处停止.
我正在使用的表达式是: bp nt!KiSwapContext ".if (poi(poi(gs:[188h])+3B8h)==0x920) {} .else {gc}"
我也尝试使用j条件语法无济于事.
关于我做错了什么的任何想法?
[编辑]哦,作为奖励,如何在64位处理器上使用dword而不是qword进行条件检查.? poi(poi(gs:[188h])+3B8h)返回qword值.我知道我可以用它dd来获取值,但我似乎无法弄清楚如何将其添加到条件中.像? dword(poi(gs:[188h])+3B8h)==0x920或的东西? {dd poi(gs:[188h])+3B8h}==0x920