标签: visual-studio-debugging

如何在Visual Studio 2010中的cshtml文件中设置断点?

我正在调试MVC应用程序中的cshtml文件中包含的某些代码。如果我在代码中故意犯了错误,则Visual Studio(2010)提供了在该行中断的选项,这时我可以观察局部变量等。此时,该文件被标记为[动态]。

我想在文件中放置一个断点而不必因故意的错误而破坏代码,我认为可以获取当前已加载(动态)文件的列表并将断点放入其中一个,但是如果我搜索诸如“ dynamic”和“ cshtml”之类的东西时我一无所获。

我怀疑这应该很容易,但是我不知道该怎么做!希望您能提供帮助。

debugging dynamic visual-studio-2010 visual-studio-debugging

5
推荐指数
1
解决办法
1万
查看次数

在vb.net中跟踪函数调用的持续时间

在我们的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

5
推荐指数
2
解决办法
1万
查看次数

DLL在VS2010中缺少模块列表

我真的一直在抨击这个谚语墙.

我有一个包含C#和C++代码项目的解决方案.

我经常调用C++ DLL,它们是在C#中通过P/Invoke在这个项目中编译的.没问题.据*.sln我所知,通过文件以及C++和C#文件的所有必需调试器设置都已正确设置.注意:我经常能够调试类似的P/Invoked C++代码而没有任何问题!

当然,我想,也许,符号没有加载 - 但是,在打开模块窗口时,我发现我试图步入的DLL甚至没有列出!跑在我的C#程序确实使用DLL(我得到正确的输出)功能,但是,同时观看模块窗口中,DLL仍然没有出现.

有没有人知道发生了什么?


TL;博士

我在调试P/Invoked C++方面有相当多的经验.但是,我想调试的DLL甚至没有出现在Modules列表中(所以如果VS调试器似乎完全没有意识到它的存在,我显然无法进入它).

c# c++ pinvoke visual-studio-2010 visual-studio-debugging

5
推荐指数
1
解决办法
2591
查看次数


无法将文件作为数据库附加/基础提供程序在Open上失败

我有一个使用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

5
推荐指数
2
解决办法
9808
查看次数

"断点的条件未能执行......'变量'未声明.它可能无法访问......"为什么?

相关问题:

我在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

5
推荐指数
0
解决办法
2089
查看次数

VC++ SSE代码生成 - 这是一个编译器错误吗?

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)

x86 assembly sse visual-c++ visual-studio-debugging

5
推荐指数
1
解决办法
581
查看次数

名称空间中不存在名称

我正在使用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"中不存在

c# datatemplate visual-studio-debugging uwp uwp-xaml

5
推荐指数
1
解决办法
2420
查看次数

Visual Studio Natvis DisplayString条件

使用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

5
推荐指数
1
解决办法
951
查看次数

单挑这个程序很奇怪 - 编译错误?

如果您通过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)

c# visual-studio visual-studio-debugging visual-studio-2017

5
推荐指数
0
解决办法
51
查看次数