是的,我知道有四个内存窗口,但我更喜欢在监视窗口中显示单个值,我想知道是否可以在监视窗口中指定要监视的内存位置.
将地址单独放置只是以十六进制计算到地址.
debugging visual-studio-2010 visual-studio visual-studio-debugging
有一个执行C#脚本的外部工作流,可以使用DLL文件(我的类库).
是否可以将调试附加到我的类库项目中,这样一旦这个WF调用它就会遇到断点?
谢谢
c# debugging class-library visual-studio visual-studio-debugging
简而言之:Console.WriteLine在VS 2015中运行正常,但它在VS 2017中不再起作用了.
详细说明:我有一些使用Console.Write的VB代码可以在VS 2015中输出ok,即使配置为使用Start Debugging启动的Release(与Debug相比)(与Start Without Debugging相反).
今天我升级到了VS 2017(社区版),但是Console.Write在与VS 2015相同的条件下不再工作了.
也许我过去在VS 2015中做了一些配置,但我不记得了.
有人可以帮我如何在相同条件下将Console.Write输出到Output Window(使用Start Debugging启动Release配置).
Obs:当你处于Debug配置时,Debug.Writeline工作正常(输出到Output Window).当您处于Release配置时,Debug.Writeline,即使您使用Start Debugging启动,也不会输出(到Output Window).需求(以及问题)是在Release配置中的Start Debugging的上下文中.
我经常发现自己在代码中的某处设置了一个断点,并在遇到这个断点时手动启用一个或多个断点.典型的情况是我在调试单元测试时并不关心前面的测试.
void testAddZeros()
{
Number a(0);
Number b(0);
Number result = a.add(b);
assert((a + b) == Number(0))
}
void testAddOnes()
{
Number a(1);
Number b(1);
Number result = a.add(b);
assert((a + b) == Number(2));
}
void testAddNegativeNumber()
{
Number a(1);
Number b(-1)
Number result = a.add(b);
assert((a + b) == Number(0));
}
Run Code Online (Sandbox Code Playgroud)
想象一下,如果testAddZeros()并且testAddOnes()运行良好,但是testAddNegativeNumber().在这种情况下,设置断点Number result = a.add(b);将是开始调试的自然场所.现在想象一下,错误位于内部深处Number::add,所以我们并没有真正对早期发生的事情感兴趣Numbers::add.我想要做的是在内部设置一个断点Numbers::add,只有当我在testAddNegativeNumber()-test 中时才触发.
在遇到断点B时有没有办法自动启用断点A?
不知何故,我从Visual Studio诊断工具中丢失了实时图表.下面是我当前的调试屏幕,显示我看不到内存和CPU使用情况的实时图表:
在哪里我正在寻找这个:
我尝试在以下地方进行在线探索:
有谁知道如何启用内存和CPU使用情况实时图表?
cpu-usage visual-studio visual-studio-debugging debug-diagnostic-tool
在Visual Studio 2012中单步执行以下示例代码时:
std::vector<int> test;
test.resize(1);
test[0] = 4;
Run Code Online (Sandbox Code Playgroud)
我可以设置一个测试手表并检查它的第0个元素.但是,如果我在test [0]上设置一个监视器,我会得到错误'no operator"[]"匹配这些操作数':

如何直接检查test [0]的值?
我正在调试以下代码:
class A
{
public virtual string X => "A";
}
class B : A
{
public bool OwnX { get; set; } = true;
public override string X
=> OwnX ? "B" : base.X; // (o)
}
class Program
{
static void Main() => Console.WriteLine(new B().X);
}
Run Code Online (Sandbox Code Playgroud)
我在标有的线上有一个断点(o).当断点命中时,我正在尝试评估base.X并获得其值"B":
问题是:为什么不"A"呢?
在 VS 2019 中,当面向 .NET Core 时,缺少在 C# 交互式控制台上初始化项目的选项。
VS 2017 中也缺少该选项,并且有一个与 VS 2017 相关的问题。但是,此问题的答案主要确认了该问题,但并未提供解决方案。
有谁知道是否存在技术限制,因此此功能对于 .NET Core 根本不可行?任何人都有一个很好的解决方法来手动初始化项目(使用完整的上下文)?
组态:
当我按F5时,解决方案构建......并且没有其他事情发生.
相反,我使用Debug/Attach to Process ...菜单,几秒钟后,我得到:
有什么建议或线索吗?
我想知道的要点:
(Cross发表于social.msdn)
在Visual Studio 2012中使用C++调试器(native,x64)时是否可以跳过STL代码?通常在调试C++代码时我会进入STL代码.我希望Microsoft提供的STL代码是正确的 - 我对调试它不感兴趣 - 我只对调试我自己的(自编)代码感兴趣.
对于在此功能设置断点时的instacne:
foo(std::make_shared<int>(6));
Run Code Online (Sandbox Code Playgroud)
其中foo定义为:
void foo(std::shared_ptr<int> x)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我不想深入了解std :: make_shared的细节 - 我想要的是直接进入函数foo.但这似乎不可能.如果到达断点at foo(std::make_shared<int>(6));并按下'Step Into'按钮(或F11),它首先进入'memory'头文件(STL):

所以我再次按下'Step Out'按钮而不是再按'Step Into'按钮进入该foo功能.我想要的是跳过STL相关参数初始化或直接跳转到函数的可能性.