我正在调试MVC应用程序中的cshtml文件中包含的某些代码。如果我在代码中故意犯了错误,则Visual Studio(2010)提供了在该行中断的选项,这时我可以观察局部变量等。此时,该文件被标记为[动态]。
我想在文件中放置一个断点而不必因故意的错误而破坏代码,我认为可以获取当前已加载(动态)文件的列表并将断点放入其中一个,但是如果我搜索诸如“ dynamic”和“ cshtml”之类的东西时我一无所获。
我怀疑这应该很容易,但是我不知道该怎么做!希望您能提供帮助。
debugging dynamic visual-studio-2010 visual-studio-debugging
在我们的VB6应用程序中,我们添加了一些实用程序函数来跟踪函数中花费的时间.我们这样做是为了跟踪性能瓶颈.
基本上,它是如何工作的有两个实用程序函数:StartTickCount()和EndTickCount().您可以在每个函数中传递函数的名称,函数将使用字典来获取调用StartTickCount()时的滴答计数,然后在调用EndTickCount()时减去滴答计数.这并不完美,因为它当然没有考虑到获取滴答计数的要求需要时间等,但基本上它适用于我们的目的.对接部分的痛苦是确保在每个函数的开头调用StartTickCount()并在每个出口点调用EndTickCount():
Private Function SomeFuction() as String
' indicate the function started
StartTickCount("MyClass.SomeFunction")
' some logic that causes the function to end
If (some logic) Then
EndTickCount("MyClass.SomeFunction")
Return "Hello!"
End If
' final exit point
EndTickCount("MyClass.SomeFunction")
Return "World"
End Function
Run Code Online (Sandbox Code Playgroud)
无论如何,是否通过VS 2010调试器或System.Reflection命名空间内置任何功能来在VB.NET中执行类似的操作?
基本上,我想要的是记录每个函数被调用的次数,在该函数中花费的总时间,在该函数中花费的平均秒数,以及在单个调用中花费的最大时间.功能.
我当然可以手工编写(因为我们已经在VB6中执行了一次),但是如果有现有的工具可以使它更容易,我宁愿使用它们.
vb.net debugging visual-studio-2010 performance-testing visual-studio-debugging
我真的一直在抨击这个谚语墙.
我有一个包含C#和C++代码项目的解决方案.
我经常调用C++ DLL,它们是在C#中通过P/Invoke在这个项目中编译的.没问题.据*.sln我所知,通过文件以及C++和C#文件的所有必需调试器设置都已正确设置.注意:我经常能够调试类似的P/Invoked C++代码而没有任何问题!
当然,我想,也许,符号没有加载 - 但是,在打开模块窗口时,我发现我试图步入的DLL甚至没有列出!跑在我的C#程序确实使用DLL(我得到正确的输出)功能,但是,同时观看模块窗口中,DLL仍然没有出现.
有没有人知道发生了什么?
TL;博士
我在调试P/Invoked C++方面有相当多的经验.但是,我想调试的DLL甚至没有出现在Modules列表中(所以如果VS调试器似乎完全没有意识到它的存在,我显然无法进入它).
在Visual Studio 2012中有没有类似于Image Watch http://visualstudiogallery.msdn.microsoft.com/e682d542-7ef3-402c-b857-bbfba714f78d的工具?
我有一个使用Entity Framework的MVC3应用程序.我大约一年没有使用过这个应用程序.最近,我在一台新PC上打开它并尝试在调试模式下运行并在调试中点击以下异常/堆栈跟踪.主要异常似乎是"无法将文件附加为数据库"和"基础提供程序在打开时失败".我在堆栈溢出时搜索了这些错误,我发现的答案似乎与这种情况不符.例如,"无法将文件附加为数据库"的答案之一表明旧版本的db可能位于本地数据库上,但是当我浏览到localdb时,我在本地数据库中看不到任何数据库在视觉工作室.
我正在寻找有关解决此问题的调查问题的指导.有什么建议?
它失败的实际代码是:
var currentHunt = (from ph in this.repo.GetAllPuzzleHunts()
orderby ph.PuzzleHuntId descending
select ph).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
这是Web应用程序首次尝试通过Entity Framework从db获取数据.
FWIW这台机器有Entity Framework 6.0,我正在使用Visual Studio 2012.
异常/堆栈跟踪如下:
System.Data.DataException was unhandled by user code
HResult=-2146233087
Message=An exception occurred while initializing the database. See the InnerException for details.
Source=EntityFramework
StackTrace:
at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
at System.Data.Entity.Internal.InternalContext.Initialize()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) …Run Code Online (Sandbox Code Playgroud) entity-framework visual-studio-debugging asp.net-mvc-3 localdb
相关问题:
我在Visual Studio 2013 Professional中遇到条件断点问题.断点条件是指一个局部变量(tagString),它在断点之前的代码行中声明和初始化.在遇到断点时,调试器声称......
断点的条件无法执行.条件是
tagString.Contains("…").返回的错误是'tagString未声明.由于其保护级别,它可能无法访问.
此错误消息似乎没有任何意义,因为该变量已声明且可访问:

我正在运行此代码的Debug版本.为什么调试器声称未定义局部变量,如何解决此问题?
PS:我刚刚意识到条件断点不起作用只是一个大问题的一小部分:调试器也无法监视该变量,也不会显示在Locals窗口中.
PPS:我已经尝试过Rick Strahl博客文章中提出的建议,"Visual Studio 2013'无法评估表达式'调试器异常",但无济于事.
debugging breakpoints conditional-breakpoint visual-studio-debugging visual-studio-2013
VC++中一个非常特殊的代码序列生成了以下指令(对于Win32):
unpcklpd xmm0,xmmword ptr [ebp-40h]
Run Code Online (Sandbox Code Playgroud)
出现2个问题:
(1)据我了解intel手册,unpcklpd接受128对齐的内存地址作为第二个参数.如果地址相对于堆栈帧,则不能强制对齐.这真的是一个编译器错误吗?
(2)只有在从调试器运行时才会执行此指令时抛出异常,即使这样也不总是如此.即使附加到进程并执行此代码也不会抛出.怎么会这样??
抛出的特殊异常是0xFFFFFFFF处的访问冲突,但是AFAIK只是一个未对齐的代码.
[编辑:]这里有一些来源证明代码生成错误 - 但通常不会导致崩溃.(这主要是我想知道的)
[编辑2:]代码示例现在重现实际崩溃.这个也在调试器外崩溃 - 我怀疑是因为调试器在不同的典型基地址启动程序而产生差异.
// mock.cpp
#include <stdio.h>
struct mockVect2d
{
double x, y;
mockVect2d() {}
mockVect2d(double a, double b) : x(a), y(b) {}
mockVect2d operator + (const mockVect2d& u) {
return mockVect2d(x + u.x, y + u.y);
}
};
struct MockPoly
{
MockPoly() {}
mockVect2d* m_Vrts;
double m_Area;
int m_Convex;
bool m_ParClear;
void ClearPar() { m_Area = -1.; m_Convex = 0; m_ParClear = true; …Run Code Online (Sandbox Code Playgroud) 我正在使用VS 2015中的数据模板绑定开发一个简单的UWP项目.当我尝试指定Datatemplate的类型时,我收到一个错误.
XAML:
<Page x:Name="RootPage"
x:Class="Adaptive_News_Layout.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Adaptive_News_Layout"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" FontSize="22" >
<SplitView x:Name="MySplitView" Grid.Row="1" DisplayMode="CompactOverlay" Background="LightGray" OpenPaneLength="200" >
<SplitView.Pane>
<ListView x:Name="MyListview" ItemsSource="{x:Bind NavigationItems}" >
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:NavItem" >
<StackPanel Orientation="Horizontal">
<RelativePanel>
<Button x:Name="Icon" FontFamily="Segoe MDL2 Assets" Content="{x:Bind ButtonIcon}" Width="50" Height="50"/>
<TextBlock x:Name="Section" Text="{x:Bind SectionTitle}" RelativePanel.RightOf="Icon" />
</RelativePanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
这是班级:
namespace Adaptive_News_Layout
{
public class NavItem
{
public string ButtonIcon { get; set; }
public string SectionTitle { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
错误如下:名称"NavItem"在名称空间"using:Adaptive_News_Layout"中不存在
使用Visual Studio 2017,我为某些类编写了Visualizer,但是我遇到了有关.natvis代码可读性的问题。我有一个自定义的数组类型,我想直接在“ 监视”窗口的“ 值”字段中显示其成员(而不是必须使用展开按钮)。
arrayType是定义数组类型(稀疏,空,密集,单例)的枚举。 numElems是数组中的条目数。无需关注此数据结构;这只是一个例子。这是我当前的natvis代码:
<Type Name="MyProject::MyArray"
<DisplayString Condition="numElems == 0">
{arrayType, en}
</DisplayString>
<DisplayString Condition="numElems == 1">
{arrayType, en} {*elems[0]}
</DisplayString>
<DisplayString Condition="numElems == 2">
{arrayType, en} {*elems[0]}, {*elems[1]}
</DisplayString>
<DisplayString Condition="numElems == 3">
{arrayType, en} {*elems[0]}, {*elems[1]}, {*elems[2]}
</DisplayString>
<DisplayString Condition="numElems >= 4">
{arrayType, en} {*elems[0]}, {*elems[1]}, {*elems[2]}, ...
</DisplayString>
</Type>
Run Code Online (Sandbox Code Playgroud)
[注意,我必须再次重复相同的代码(只是添加一个额外的元素来显示)。由于代码膨胀,我停止显示3个元素。]
这将允许监视窗口(在Visual Studio中)以以下方式显示对象:
Name Value
arr1 Sparse 5, 3 ; numElems is 2
arr2 Empty ; numElems …Run Code Online (Sandbox Code Playgroud) c++ visual-studio visual-studio-debugging xml-visualizer natvis
如果您通过VS2017这个小控制台程序,单步,你最终会执行两将的WriteLine(...)声明及对掷(...)声明.
这应该是绝对不可能的,那怎么可能呢?
using System;
using System.Threading.Tasks;
namespace ConsoleApp7
{
class Program
{
static void Main(string[] args)
{
Task.Run(() => ProcAsync()).Wait();
}
private static async Task ProcAsync()
{
int aNumber = 7;
switch (aNumber)
{
case 7:
Console.WriteLine("The value is 7"); //You first arrive here...
break;
default:
throw new Exception("Oups..?!"); //but then also here!!!??
}
}
}
}
Run Code Online (Sandbox Code Playgroud)