我Debug.WriteLn在Visual Studio 2015中检查输出中的特定内容时遇到问题.(2012和2013版也是如此.)
XCode和Eclipse都在Output窗口顶部包含一个过滤器框.我试图为Visual Studio找到类似的扩展,但我没有运气.有没有办法有类似的功能并过滤输出窗口?
我有一个带有一些静态属性的静态类.我在静态构造函数中初始化了所有这些,但后来意识到它是浪费的,我应该在需要时懒惰加载每个属性.所以我切换到使用该System.Lazy<T>类型来完成所有脏工作,并告诉它不要使用它的任何线程安全功能,因为在我的情况下执行始终是单线程的.
我最后得到了以下课程:
public static class Queues
{
private static readonly Lazy<Queue> g_Parser = new Lazy<Queue>(() => new Queue(Config.ParserQueueName), false);
private static readonly Lazy<Queue> g_Distributor = new Lazy<Queue>(() => new Queue(Config.DistributorQueueName), false);
private static readonly Lazy<Queue> g_ConsumerAdapter = new Lazy<Queue>(() => new Queue(Config.ConsumerAdaptorQueueName), false);
public static Queue Parser { get { return g_Parser.Value; } }
public static Queue Distributor { get { return g_Distributor.Value; } }
public static Queue ConsumerAdapter { get { return g_ConsumerAdapter.Value; } }
}
Run Code Online (Sandbox Code Playgroud)
在调试时,我注意到了一条我从未见过的消息: …
c# lazy-loading visual-studio-2010 visual-studio visual-studio-debugging
在我的C#对象中,我使用value == "Status"此属性的setter中的条件设置了条件断点.通常它用PostSharp方面装饰,但我在这种情况下评论说它仍然有问题.
public virtual string Name
{
get
{
return _name;
}
set
{
_name = value; // breakpoint here
}
}
Run Code Online (Sandbox Code Playgroud)
第一次执行到达断点时,VS显示错误:

编辑 - 对于可搜索性,消息是这样的:
无法设置以下断点:
在(文件).cs,第137行第17个字符('(class).Name',第12行),当'value =="Status"'为真时
功能评估需要运行所有线程.
这是Threads窗口的样子:

以前有人见过这个,或者有什么想法可能会导致调试器对这个看似简单的情况感到不满?它可能与睡眠线程有关吗?
我也试过2个解决方案.但它没有用.
和
我在vc ++中编写了一个程序,在各种情况下具有不同的行为,如下所示.
当我通过F5运行它时,它在释放模式下正常工作.
当我通过ctrl + F5运行它时,当我开始向程序发送数据时它会崩溃.
在视觉工作室之外,它立即崩溃.
我不知道如何找到这个bug.有关这些案件之间有何不同之处的任何想法?
我想出了.NET程序集.dll文件如何使用GUID(博客)映射到.pdb .当我调试到一个程序集并询问源代码时,如果我导航到一个文件,它可能会告诉我源代码与原始代码不同.怎么知道这个?我期望.pdb文件包含每个文件的校验和,但它似乎没有.我发现转储调试信息的最佳工具是dia2dump.C++ .pdb文件有MD5条目,但C#.pdb文件没有.
C++ dump
dia2dump -f dia2dump.pdb> dia2dump.pdb.files.txt
C#dump
dia2dump -f Autofac.pdb> Autofac.pdb.files.txt
dia2dump -all Autofac.pdb> Autofac.pdb.all.txt
我在"全部"转储中错过了什么?
它必须使用校验和.如果我在Module.cs中更改单个字符,我会得到:

在哪里可以找到.pdb中引用的源文件的校验和?
我们有一个使用Visual Studio 2005构建的本机C++ Win32 .exe,它可以在我们内部测试的所有机器上完美运行(XP 32位,Vista 32位和Windows 7 64位).但当然,它在客户端的32位Vista机器上反复崩溃.
在几个网站上挖掘我发现花絮表明我是否将PDB文件(vc80.pdb和projectName .pdb)以及可执行文件的Release版本发送给客户,有一些方法可以在发生崩溃时生成小型转储.然后,我可以将崩溃转储加载到Visual Studio中,并获取堆栈跟踪和一些其他有用的信息.微软的Dr. Watson实用程序似乎也参与了这个过程.
但我找不到任何关于实现这一目标的步骤的明确指示
有人可以描述这个过程吗?
c++ debugging visual-studio visual-studio-debugging pdb-files
每次我尝试调试我的一个应用程序时,我收到以下错误消息.有人有主意吗?我尝试在安全模式下运行Visual Studio,但我得到同样的东西.我也尝试修复安装并完全重新安装它没有运气:(.完整的问题签名是这样的:
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: devenv.exe
Problem Signature 02: 11.0.50727.1
Problem Signature 03: 5011ecaa
Problem Signature 04: Microsoft.IntelliTrace.Package.11.0.0
Problem Signature 05: 11.0.50727.1
Problem Signature 06: 5011dad8
Problem Signature 07: 311
Problem Signature 08: 1f1
Problem Signature 09: System.AccessViolationException
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
visual-studio intellitrace visual-studio-debugging visual-studio-2012
我正在寻找一种在VS2012中通过NatVis显示UUID的正确方法.我自己的uuid类型在内部使用UUID big-endian,因此转换为(GUID*)不起作用,因为GUID在Windows中使用little-endian.所以我总是看到一个歪曲的uuid.
此外,Natvis中的任何格式说明符看起来都不好,因为在使用十六进制表示法时我无法摆脱输出中的0x.有任何想法吗?
c++ debugging visual-studio-debugging visual-studio-2012 natvis
我使用visual studio 2012和Qt4.8.5,遗憾的是当我在调试模式下工作时,我看不到QString文本变量.有人有提示允许吗?VS2012不存在Qt4.8.5插件.
非常感谢
泽维尔
debugging ×4
c# ×3
c++ ×3
pdb-files ×2
intellitrace ×1
lazy-loading ×1
natvis ×1
qt4.8 ×1
visual-c++ ×1