在 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 正在服务哪个应用程序池,然后决定将调试器附加到? 的相关文章

  • 开始调试和附加到进程有什么区别

    当我将项目附加到我的 w3wp exe IIS 工作进程时 我的项目加载速度明显快于 开始调试 时的加载速度 但是 无论我 开始调试 还是 附加到进程 同一个工作进程似乎都在处理相同数量的模块 DLL w3wp exe 为什么附加到进程的速
  • 我需要app.config吗?

    我制作了一个应用程序 它使用 Visual Studio 的 app config 来存储有关复选框状态等的设置 效果很好 我从默认目录复制了应用程序的 exe 并运行它 我忘记了 app config 文件 但它仍然正常工作 app co
  • Windows 上的 npm run start 出现“DEBUG=*”问题

    name apokidsi version 0 717 contributors dependencies angular 1 5 8 angular cookies 1 5 8 angular messages 1 5 8 angular
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • 编写 LESS 时,chrome 调试器中出现红点?

    我正在将 css 文件转换为 LESS 文件 我的 LESS 只有一部分运行良好 我在 chrome 调试器中看到那些有问题的行有一条奇怪的红点线 知道它们是什么意思吗 http codemirror net doc releases ht
  • 在 Haskell/Yampa 和 HOOD 中调试游戏对象的输出

    我一直坚持使用 Haskell Yampa Arrows with HOOD 为我的游戏对象生成调试输出 我的引擎基本上运行一系列游戏对象 这些对象产生输出状态 线 圆 然后进行渲染 data Output Circle Position2
  • 如何在Conky中实现一个基本的Lua功能?

    我正在尝试向我的 Conky 添加一个函数 该函数打印字符串的长度以用于调试目的 代码位于名为的文件内test lua 非常简单 function test word return string len word end 我这样加载它 在我
  • Visual Studio在其他计算机上远程上传和调试

    有没有办法在另一台计算机上远程上传 运行和调试应用程序 我知道您可以将 Visual Studio 远程调试器附加到远程计算机上运行的应用程序 但我正在寻找一种完全自动化的方法来执行此操作 我正在构建一个家庭自动化系统 如果我能为 Visu
  • 使用accumulate计算数组double[]平均值的函数

    它一定是最常见的函数 每个人在某处都有代码片段 但我实际上花了不少于 1 5 小时在 SO 以及其他 C 网站上搜索它 但还没有找到解决方案 我想计算 a 的平均值double array 使用函数 我想将数组作为函数传递给参考 有数百万个
  • C++ 进程管理 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个众所周知的 可移植的 好的 C 进程管理库 我发现了一个很有前途的图书馆叫做升压过程 htt
  • 如何使用 PDB 文件

    我听说使用 PDB 文件可以帮助诊断崩溃发生的位置 My basic理解是你给 Visual Studio 源文件 pdb 文件和崩溃信息 来自 Dr Watson 有人可以解释一下这一切是如何运作的 涉及什么吗 谢谢你 PDB 文件将程序
  • Visual Studio 2010 是否允许您编辑图标?

    当我在 Visual Studio 2010 专业版 中双击 ico 文件时 它会打开看起来像图标编辑器的内容 看起来应该很容易从左侧选择颜色并编辑像素 但我的鼠标是一个放大镜图标 左键单击 右键单击 他们所做的只是切换图标的缩放 我不知道
  • 找不到文件“obj\Debug\OldProjectName.csproj.FileListAbsolute.txt”

    我正在尝试发布项目 工具 vs2010 但无法始终收到以下错误 我从另一个项目粘贴到我的项目文件 然后将命名空间 OldProjectName 更改为父项目 NewProjectName 但它仍然从某个地方获取有关旧项目的信息 我清理了解决
  • 在 Visual Studio 2010 中删除 .pdb 文件

    当我使用 Visual Studio 2010 编译 sln 文件时 会生成 pdb 文件 如何禁用 pdb 文件的创建 项目属性 构建 高级 中有一个选项 将 调试信息 更改为 无 但是 只有在确定不需要它们时才应该这样做 最好保留 PD
  • F# 2010 Seq.generate_using

    Visual Studio 2010 中的 Seq generate using 是否有替代 解决方法 FSharp PowerPack dll 不适用于 2010 AFAIK 很抱歉 2010 年的 PowerPack 尚未上市 我不记得
  • 用户空间栈和堆的内存布局

    最近在研究OS 网上有一张图 展示了用户空间和内核空间的内存布局 以及栈 堆等的布局 在这个图中我看到栈位于用户空间的最高内存地址 高于堆 数据段等 为了检查这一点 我在调试视图下使用了 vs2012 中的内存观察器窗口 这是我的代码 in
  • Chrome DevTools 脚本黑盒不起作用

    我正在尝试使用 chrome devtools 的新功能 黑盒脚本 这篇 Chrome Devtools 文章列出了脚本黑盒功能 https developer chrome com devtools docs blackboxing wh
  • 如何使用 python 显示当前用户的进程列表?

    我知道它与 proc 有关 但我不太熟悉它 教科书的答案是使用psutil像这样的模块 import psutil getpass os user name getpass getuser process dict proc pid pro
  • 反向 P/Invoke 教程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个旧的 C C 类 我想使用 PInvoke 重构并从 net 访问它 所有 P Invoke
  • 从 java servlet 运行长进程的最佳方法是什么?

    我想问从 java servlet 运行长进程的最佳方法是什么 我有一个网络应用程序 当客户端发出请求时 它会运行一个 servlet 该 servlet 应该从请求中获取一些参数 然后运行一个进程 这个过程可能需要很长时间 所以我需要单独

随机推荐