在 VS2010 中,有没有办法知道给定的 w3wp.exe 正在服务哪个应用程序池,然后决定将调试器附加到?

2024-03-14

因此,我正在调试一些在单独的应用程序池中本地运行的网站(一个来自主干,一个来自分支)。我在两个 VS 实例中打开了主干和分支解决方案。我想在一个中调试主干,在另一个中调试分支。我想知道是否有一种方法可以知道每个 w3wp.exe 正在服务哪个应用程序池,以便在附加调试器时知道哪个是哪个应用程序池。

更新:这样做的目的是在 VS 中编写一个宏,然后让我有一个按钮(每个有趣的应用程序池),可以单击该按钮来附加调试器。因此解决方案最好不涉及其他程序。

Update2:这是在 Windows 7 上针对 IIS7 的。


下面是我的核心宏。编写一些单行子程序来调用它,例如AttachToW3wp("DefaultAppPool")命名您感兴趣的每个应用程序池,并为它们制作按钮和热键。

    Private Sub AttachToW3wp(ByVal appPoolName As String)
    Const processName As String = "w3wp.exe"
    Dim userName As String = String.Format("IIS APPPOOL\{0}", appPoolName)

    Try
        Dim debugger As EnvDTE90.Debugger3 = CType(DTE.Debugger, EnvDTE90.Debugger3)
        'debugger.DetachAll()

        Dim transport As EnvDTE80.Transport = debugger.Transports.Item("Default")
        Dim qualifier As String = Environment.MachineName '= My.Computer.Name
        Dim engines(3) As EnvDTE80.Engine
        engines(0) = transport.Engines.Item("Managed")
        engines(1) = transport.Engines.Item("Script")
        engines(2) = transport.Engines.Item("T-SQL")

        Dim successMessage As String = String.Empty
        For Each process As EnvDTE80.Process2 In debugger.GetProcesses(transport, qualifier)
            With process
                Dim fi As New System.IO.FileInfo(.Name)
                If fi.Name = processName AndAlso (String.Compare(.UserName, 0, userName, 0, Len(userName), True) = 0) Then
                    If .IsBeingDebugged Then Throw New Exception(String.Format("{0} {1} is already attached to a debugger.", processName, userName))

                    process.Attach2(engines)
                    successMessage = String.Format("Attached to {0} for {1} ({2})", processName, userName, .ProcessID)

                    Exit For
                End If
            End With
        Next

        If successMessage = String.Empty Then
            Throw New Exception(String.Format("{0} {1} not found.", processName, userName))
        Else
            Trace.WriteLine(successMessage)
        End If

    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VS2010 中,有没有办法知道给定的 w3wp.exe 正在服务哪个应用程序池,然后决定将调试器附加到? 的相关文章

  • C# 锁(mylocker) 不起作用

    我有很多 Web 服务调用 异步 在回调中 我会将结果绘制到 Excel 中 我想同步绘图方法 所以我使用以下内容 但是 从我在 Visual Studio 中追踪到 每次 lock locker 都会成功 并且有许多线程运行clearco
  • 获取进程的所有 DLL

    我想获取为给定进程加载的所有 dll 的列表 我目前正在使用 NET框架4 0 我知道有一个bug https connect microsoft com VisualStudio feedback details 546430 syste
  • 有没有办法确定 Firebug 或 Web Inspector 中发出 XHR 的行?

    有没有办法确定 Firebug 或 Web Inspector 可能是 Opera Dragonfly IE 开发人员工具栏 中发出 XHR 的行和文件名 如果没有 找出答案的最佳方法是什么 只是在代码库中搜索调用的 URI 不过 通常它会
  • Visual Studio 2010 (C++):暂时抑制 C4706 警告

    当您在 Visual Studio 2010 中编译以下 C 源文件并启用警告级别 W4 时 include
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • Visual Studio C# 2010 Express 调试运行速度比发布速度更快

    我有一个恰好有 2 个线程的 Windows 窗体应用程序 这些线程彼此之间的交互为零 第一个线程运行时不会干扰第二个线程 它们之间没有同步 因为不需要发生这种情况 第一个线程处理应用程序的 UI 更改颜色和标签 并运行一个计时器来捕获一些
  • Java实时调试(游戏)

    在此视频中 http www youtube com watch v BES9EKK4Aw4 Notch 我的世界 的创造者 正在做他所说的 实时调试 他实际上是在修改代码的同时玩游戏 而不是每次都重新编译 有谁知道这叫什么或者我可以在哪里
  • C# 新进程窗口不隐藏[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 应用程序中隐藏命令窗口 https stackoverflow com questions 3440105 hide command window in c sharp application
  • 杀死使用popen2创建的进程

    我正在使用函数 popen2 已在 stackoverflow 上的其他地方推荐 以编程方式创建一个必须在一段时间后再次终止的进程 popen2 返回一个 PID 我认为这个 PID 可以用来杀死该进程 但这种方式行不通 为了杀死它 我必须
  • 我可以设置通过 Visual Studio 运行的应用程序将显示在哪个显示器上吗?

    我使用多个显示器 并且更喜欢在中间打开 Visual Studio 并且希望通过 Visual Studio 测试 运行的应用程序在左侧或右侧打开 而不是在代码顶部打开 你认为有一种方法可以做到这一点 那就是自动的吗 可以在选项中的某个位置
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • 如何使用 std::string 创建条件断点

    假设我有这个功能 std string Func1 std string myString do some string processing std string newString Func2 myString return newSt
  • 莫名其妙的 MissingFieldException

    在下面的代码片段中 它会抛出 MissingFieldException Field Not Found DepthBidLevels 异常 但仅在下面描述的某些奇怪情况下才会抛出 for int i DomSize 1 i gt 0 i
  • 在 Visual Studio 2010 解决方案级别定位 .NET Framework 的特定版本

    我想在我的 Visual Studio 2010 解决方案中同时针对 NET 3 5 和 NET 4 0 我知道我可以设置
  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 如何生成wcf服务库项目的wsdl文件?

    我的解决方案中有一些 Wcf 服务库项目 不是 Wcf 服务应用程序 我必须将项目的 wsdl 文件提供给将使用这些服务的同事 我怎样才能做到这一点 提前致谢 您可以使用WCF服务主机 http msdn microsoft com en
  • 如何在 VS QuickWatch 窗口中输入日期时间值?

    我正在尝试更改 QuickWatch 窗口中的一些日期时间数据 我尝试过 1 29 2009 等 但似乎都不起作用 它只是一直回到 12 00 00 AM DateTime 中的年 月 小时等字段是不可变的 您无法在 QuickWatch
  • SSRS。如何在table1_Details_Group右侧创建新的行组?

    我正在使用 Microsoft Visual Studio 2013 创建报告 PROBLEM 如果我添加新的Row Group前面会自动添加table1 Details Group 问题 如何更改组的顺序或在右侧添加新组table1 De
  • 多线程调试器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 GDB 在使用多线程 pthreads 进行调试时存在严重问题 nix 上还有其他好的 C C 多线程调
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th

随机推荐