首页
学习
活动
专区
圈层
工具
发布

VisualStudio 断点调试详解

本文详细告诉大家 VisualStudio 断点调试的功能和使用方法,本文使用的是最新 VisualStudio2019 的功能,也许在你看到这篇博客的时候这个版本已经过时 本文将会按照从简单到复杂,从常用的到不常用的方式...运行程序,当程序运行到此行的时候,将会进入断点,程序将会暂停进入调试 从代码行添加断点是最常用的方法 添加函数断点 点击工具栏的 调试-窗口-断点 打开断点设置 点击添加可以添加函数断点,函数断点需要添加限定符...如不存在多重命名冲突的时候,可以去掉命名空间 从调用堆栈添加断点 在 VisualStudio 暂停程序进入断点的时候,可以点击 调试-窗口-调用堆栈 打开调用堆栈窗口,在调用堆栈窗口可以点击某个方法右击添加断点...条件断点 如果打上断点每次都进来,有时也会降低调试的速度,例如我在循环的开始打上断点,每次循环都进入断点,刚好这个循环需要循环 1000000000 次,假设一秒能调试一次,请问你调试完成这个循环需要多久...为了让小伙伴可以快速进行调试,忽略自己不关注的断点,在 VisualStudio 提供了条件断点的功能,给断点进入添加条件 给断点添加条件有两个方法,第一个方法和使用代码行添加断点的方法相同,将鼠标移动到断点上

3.4K20

VisualStudio 调试内存泄漏方法

本文告诉大家如何通过 VisualStudio 调试内存泄漏,这个方法适合进行日常优化 在调试内存泄漏时,最简单的方法时通过内存使用率进行调试。...建议将断点放在离具体业务执行完成之后的比较后的时间,或者在业务执行完成之后,等待一会通过 VisualStudio 的全部中断进入断点,因为对象回收是依赖GC的,在业务执行完成之后立刻添加断点可能此时的对象没有任何引用但是没有被...gc回收 第一步运行相应的业务,然后等待一下进入断点,进入断点的方法可以是业务执行之后的后面的逻辑添加断点或者 VisualStudio 点击全部中断 第二步是点击内存使用率,点击截取快照 第三步是打开快照堆视图...对象的占用内存 通过在代码给元素命名,也就是继承基础的数组等,这样可以在调试内存泄漏时,将不同的业务分开。...解决在调试内存时看到大量的都是如 List 的元素 更多调试方法请看 dotnet 代码调试方法 特别感谢 Dotnet9 小伙伴指出本文错误

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    VisualStudio 开启仅我代码调试

    在 VisualStudio 开始调试的时候经常需要加载很多符号,加载符号的速度很慢,很多时候我只是调试我的代码,因为框架提供的代码都是很稳定的,只有我这么逗比才会写出诡异的方法。...可以在设置开启仅我代码进行调试,开启之后只有自己的用户代码才会进行调试,也只有自己的代码才会加载符号文件,这样可以调试的速度 在 VisualStudio 可以使用开启仅我代码提高调试速度 点击工具-选项...找到调试里面的开启仅我代码就可以在调试的时候只加载用户代码的符号 此时会自动跳过库里面的代码调试,同时也会跳过使用DebuggerNonUserCodeAttribute标记的代码 如我添加了函数...Foo 在这个函数上面添加DebuggerNonUserCodeAttribute那么在调试的时候无法在这个函数添加断点也无法单步进入这个函数 [DebuggerNonUserCode]

    55310

    VisualStudio 通过外部调试方法快速调试库代码

    在开发的时候,我有一个很大的项目,里面包含了 1000 个项目,但是我需要调试里面的一个库,如果直接修改这个库,会让 VisualStudio 重新编译 90 个项目,于是这样的调试的速度就太慢 本文告诉大家如何通过外部调试的方法...Foo 类,但是如果我修改了 Foo 类里面的方法 A 的一些代码,我需要重新编译 WPF 项目才可以进行调试 可以通过 VisualStudio 调试可执行文件的方法外部调试这样就可以只编译 dotnet... C:\lindexi\VisualStudio 通过外部调试方法快速调试库代码\RoballXairpeeWikirai...如果这个 dotnet core 程序被多个项目引用,希望能在不同的引用的程序调试请看VisualStudio 使用多个环境进行调试 现在右击修改启动项目为 dotnet core 项目,最快修改启动项目的方法是点击下拉选择程序...,但是在调试的时候还是存在一些不足 不能让库修改为二进制不兼容 如果跳转到引用的程序的代码,在第一次可以修改里面的内容继续执行,但是在第二次调试会显示代码和符号不相同 有时候 VisualStudio

    1.4K10

    VisualStudio 使用多个环境进行调试

    在 VisualStudio 2017 支持使用 launchSettings.json 文件定义多个不同的环境进行调试 先给大家一张图看一下效果 ?...实际上这个是通过 launchSettings.json 设置的,可以在 VisualStudio 里设置也可以在文件直接修改。...在调试添加 先创建一个 dotnet core 的程序,为什么需要创建这样的一个程序?因为在 dotnet core 项目创建出来就是新的 VisualStudio 2017 的项目格式。...选择项目就是启动这个项目进行调试,可以在调试的时候输入应用程序参数和设置工作文件夹。 这里的应用程序参数就是在运行控制台的时候传入的参数。...这时的 VisualStudio 执行的就是这个传入的软件,这个就和使用调试附加到进程一样。 这个问题是在堆栈网的以为大神问的,他问启动的几个选项有什么不同,于是我就这样回答 ?

    1.1K20

    VisualStudio 开启仅我代码调试

    在 VisualStudio 开始调试的时候经常需要加载很多符号,加载符号的速度很慢,很多时候我只是调试我的代码,因为框架提供的代码都是很稳定的,只有我这么逗比才会写出诡异的方法。...可以在设置开启仅我代码进行调试,开启之后只有自己的用户代码才会进行调试,也只有自己的代码才会加载符号文件,这样可以调试的速度 在 VisualStudio 可以使用开启仅我代码提高调试速度 点击工具-选项...找到调试里面的开启仅我代码就可以在调试的时候只加载用户代码的符号 ?...此时会自动跳过库里面的代码调试,同时也会跳过使用DebuggerNonUserCodeAttribute标记的代码 如我添加了函数 Foo 在这个函数上面添加DebuggerNonUserCodeAttribute...那么在调试的时候无法在这个函数添加断点也无法单步进入这个函数 [DebuggerNonUserCode] private static void Foo()

    1.4K20

    VisualStudio 使用 FastTunnel 辅助搭建远程调试环境

    有时候需要远程调试一些用户问题,期望能使用本机的 Visual Studio 开发环境,调试远程的用户的设备上的应用。...本文将告诉大家如何采用 FastTunnel 工具,让本机的 Visual Studio 和远程的用户的设备建立调试联系,搭建远程调试环境,从而支持远程调试 开始之前需要先介绍一下 FastTunnel...,快速的调试可以选用不安全的方式,也就是没有带用户权限的方式进行调试,这样的调试就不需要登录用户设备的用户账户,比较方便 点击工具选项,进行选项设置。...因为这就意味着任何能访问到用户设备远程调试端口的人都可以挂上调试,而挂上了调试了,还有啥不能做的。...这也是我为什么不使用默认的远程调试端口的原因 完成配置之后,点击确认,可以看到 msvsmon 输出了启动成功 回到自己的开发设备上,开始打开 VisualStudio 进行远程调试 点击 调试->附加到进程

    1.2K20

    VisualStudio 调试时会不断刷新 WPF 应用渲染

    在 VisualStudio 附加调试和没有用 VisualStudio 附加调试时,对应用程序是有不同的影响,如 VisualStudio 设计器将会在附加调试 WPF 应用的时候,不断刷新 WPF...附加调试下的视觉效果如下图,可以播放动画 然而有趣的是,在 VisualStudio 不附加调试的时候,可以发现界面不动了,如下图。...VisualStudio 调试时看起来才是对的,或者看起来不对。...刚好在 VisualStudio 调试器里面有这样的逻辑,不断更新调试的工具的某些依赖属性。...因为 VisualStudio 代码是没有开源的,我也不想去了解细节,因此本文只是告诉大家 VisualStudio 有这个行为 在 VisualStudio 调试工具更新依赖属性的时候,将会触发元素的重新布局

    82360

    Roslyn 让 VisualStudio 急速调试底层库方法

    本文提供一个简单的方法让大家可以通过修改项目文件,让 VisualStudio 可以急速调试底层库,每次更改底层库只需要重新编译底层库就可以 本文提供的方法和通过外部调试方法快速调试库代码 说到的方法几乎相同...不过小伙伴会在这段时间里面水了很多 QQ 群,所以我才会一天都看到一些小伙伴都在群里说话 从通过外部调试方法快速调试库代码 可以知道,想要让 VisualStudio 调试库的代码只需要将对应的 dll...关于二进制兼容请看VisualStudio 通过外部调试方法快速调试库代码 写到这里的代码已经放在 github 如果小伙伴还不知道上面的步骤,可以下载代码自己运行一下 当然每次都这样做还是比较不清真,...所有的底层库写的代码都差不多,是不是可以做一个 NuGet 库帮助写代码 没错,我创建了项目 dotnet-campus/UsingMSBuildCopyOutputFileToFastDebug: 通过复制输出文件让 VisualStudio...,请将 主项目的输出文件夹 修改为实际的文件夹 VisualStudio 通过外部调试方法快速调试库代码 Roslyn 如何使用 MSBuild Copy 复制文件

    61120

    Blazor项目在VisualStudio调试时配置运行基础目录

    因为我们本地项目默认运行的时候并没有配置二级目录,启动的时候直接是 https://localhost:port/ 这样的形式,标签页直接调转的时候因为没有二级目录的存在,项目直接运行与根目录下则也不存在问题,不好调试...选中我们的 Blazor 项目右击属性,然后在左侧找到 调试-常规 ,点击打开调试启动配置文件UI 然后在命令行参数中输入,--pathbase=/consoul 然后找到 Blazor 项目的...然后就可以模拟线上的运行情况进行调试了,该 bug 目前已修复, https://github.com/ant-design-blazor/ant-design-blazor/pull/3142 https...://github.com/ant-design-blazor/ant-design-blazor/pull/3153 至此关于 Blazor项目在VisualStudio调试时配置运行基础目录 就讲解完了

    2.3K50

    VisualStudio 如何 SSH 远程调试 Linux 的 dotnet 应用的启动

    本文将告诉大家,如何使用 VisualStudio 2022 工具,通过 SSH 远程调试运行在 Linux 系统上的 dotnet 系应用的启动过程 本文写于 2024.06.07 如果你阅读本文的时间距离本文编写的时间过于长...,那本文可能包含过期的知识 当前的 VisualStudio 2022 不能和在 Windows 一样,在 Linux 上一键进入构建且调试。...只好通过远程调试的方式进行附加,而附加进程时,可能所需调试的是应用启动过程的逻辑,这将导致调试附加过去时,应用已经跑过了启动逻辑,导致无法进行调试 尽管编写一个 VisualStudio 插件可以很好的解决此问题...,然而现在我没有那么有空,本文将告诉大家一个简单的方式,可以不依靠任何第三方工具,就使用现成的 VisualStudio 即可实现远程调试运行在 Linux 系统上的 dotnet 系应用的启动过程 开始之前...,请参阅 UOS 开启 VisualStudio 远程调试 .NET 应用之旅 博客搭建好环境 在需要调试启动的 dotnet 应用里面,在 Program 的 Main 方法添加如下代码 while

    1K10

    VisualStudio 配置多进程调试快捷键启动项目

    在使用 VisualStudio 进行多进程调试的时候,只有第一个设置为启动项目的进程可以通过按下 F5 进行调试,而其他的进程是需要在对应项目右击选择调试,点击启动新实例,这样的调试效率实在很低。...本文告诉大家如何设置快捷键用来启动选中项目调试 如果只是单个启动项目,不使用多进程调试,可以使用 VisualStudio 快速设置启动项目 方法快速设置某个项目作为启动项目 如果有多个项目,同时这些项目都是可以启动作为多进程调试的进程...,在不进行配置的 VisualStudio 需要右击项目,选择调试,点击启动新实例,请看下图 ?...,选择另一个项目按下快捷键启动调试 如果是英文版的 VisualStudio 在显示命令包含里面输入将 启动新实例 替换为输入 StartNewInstance 就可以 ---- 本文会经常更新...,请阅读原文: https://blog.lindexi.com/post/VisualStudio-%E9%85%8D%E7%BD%AE%E5%A4%9A%E8%BF%9B%E7%A8%8B%

    91710

    VisualStudio 2019 调试项目使用 Portable PDB 提示不支持 PDB 格式

    在新的 .NET 上,将会默认使用 Portable PDB 符号格式,而如果 VisualStudio 配置了使用托管兼容模式,那么将在加载符号的时候,将会提示不支持 PDB 格式 在发现自己的代码因为没有加载符号而断点无法命中提示当前不会命中断点...,还没有为该文档加载任何符号,就应该通过 调试->窗口->模块 打开模块界面,找到自己要调试的程序集,右击加载符号 如果 VisualStudio 找不到默认的符号文件,可以自己设置文件夹 但是在使用...Portable PDB 符号格式,如果 VisualStudio 配置了使用托管兼容模式,那么将会在模块界面看到自己的程序集的时间戳是 1951 年左右的。...将因为默认不会忽略 pdb 符号文件时间戳而失败 在自己找 PDB 文件,将会提示不支持 PDB 格式,或者英文版本的 PDB format is not supported 提示 解决的方法不是让 VisualStudio...只有在将默认调试引擎替换为旧版本才需要使用托管兼容模式,而旧版本的调试不支持新版本的 PDB 格式 点击工具->选项->调试 找到 使用托管兼容模式 选项,禁用即可 在英文版本的 VS 对应的选项是 Use

    93930

    VisualStudio 在 DebuggerDisplay 的属性更改业务逻辑将会让调试和非调试下逻辑不同

    本文记录我写的逗比代码,我在 DebuggerDisplay 对应的属性的 get 方法上,在这个方法里面修改了业务逻辑,如修改界面元素,此时我在 VisualStudio 断点调试下和非断点调试下的行为不相同...在 VisualStudio 调试器进入断点,默认开启隐函数求值,将会自动调用对应的类型的 DebuggerDisplay 特性里面说明的输出方法,如果对应的对象没有定义 DebuggerDisplay...无论是在 DebuggerDisplay 特性还是在 ToString 方法里面编写变更业务逻辑的代码,都会让在断点调试下和非断点调试下的行为不相同 如以下代码,我的 xaml 界面如下 VisualStudio 调试调用 而如果在 get 方法编写业务逻辑,那么调用 get 的次数将会和断点进入次数相关,或和具体获取属性的次数相关 更多的代码细节还请到...dotnet 代码调试方法 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/VisualStudio-%E5%9C%A8-DebuggerDisplay

    66710
    领券