如何在C#中拦截调试信息(Debugview风格)?

2023-12-01

出于测试目的,我计划组装一个小应用程序,该应用程序将侦听来自应用程序的特定事件并在此时与其交互。

鉴于我们正处于测试过程中不可能更改应用程序代码的阶段,从我的角度来看,理想的做法是监听应用程序的调试跟踪,有点像 debugview 所做的那样,并做出响应对此。

任何人都可以提供有关如何最好地解决此问题的指导吗?


我发现这样做的方法是使用数据库管理工具来自 Microsoft 的帮助让我可以从运行时访问核心调试信息。我使用的代码的基本形状如下所示:

 MDbgEngine mg;
 MDbgProcess mgProcess;
 try
 {
       mg = new MDbgEngine();
       mgProcess = mg.Attach(debugProcess.Id);
 }
 catch (Exception ed)
 {
       Console.WriteLine("Exception attaching to process " + debugProcess.Id );
       throw (ed);
 }
 mgProcess.CorProcess.EnableLogMessages(true);
 mgProcess.CorProcess.OnLogMessage += new LogMessageEventHandler(HandleLogMessage);
 mg.Options.StopOnLogMessage = true;
 mgProcess.Go().WaitOne();
 bool running = true;
 Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);
  while (running)
   {
       try
       {
           running =mgProcess.IsAlive;
           mgProcess.Go().WaitOne();
        }
        catch
         {
            running = false;
         }
     }

无论如何,它似乎足以满足我的需要,也许它会为其他遇到同样情况的人提供一个有用的模板。

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

如何在C#中拦截调试信息(Debugview风格)? 的相关文章

随机推荐

  • 让数组像圆一样工作

    我不太确定该怎么做 伪代码 array1 a b c d e f g h i j there might be more values take c loop gt c 3 f f 3 i i 3 b b 3 e end loop 我需要做
  • LINQ where 子句在第二个 where 时抛出错误

    UPDATE 即使对联系人的名字或姓氏进行搜索也会导致问题 var contacts from c in context ContactSet join m in context py3 membershipSet on c Contact
  • 如何在 Python 中定义具有默认参数值和可选参数的函数?

    我想定义一个可以省略输入参数或具有默认值的函数 我有这个功能 def nearxy x y x0 y0 z distance for i in range 0 len x distance append abs math sqrt x i
  • 如何阻止 div 内并排的 3 个图像换行到下一行?

    我无法弄清楚这一点 我希望 3 个图像并排放置在 930px 宽的 div 中 因此 当您进入响应式设计模式 或横向拖动屏幕浏览器以使其变小时 所有 3 个图像将并排保留在 div 内 而不会换行到下一行 但会自动开始调整大小以适应调整大小
  • 如何阻止 MySQL 复制返回数组中每列的条目?

    我的 MySQL 查询返回包含重复条目的数组 编号键和标记键 其中包含相同的数据 这可能是标准的 但似乎很浪费 并且如果我打印值可能会导致问题 我的意思是 显然这不是一个大问题 但我只是好奇我是否能阻止它 看来没有必要 例如 Array 0
  • Unix fork() 系统调用什么时候运行?

    void child int pid printf Child PID d n pid exit 0 void parent int pid printf Parent PID d n pid exit 0 void init printf
  • 从不同字节中提取并组合位 c c++

    我已经声明了一个字节数组 uint8 t memory 123 我已经填写了 memory 0 0xFF memory 1 0x00 memory 2 0xFF memory 3 0x00 memory 4 0xFF 现在我收到用户对特定位
  • HttpRequest 和 POST

    我不断收到以下错误消息之一 The remote server returned an error 400 Bad Request OR System Net ProtocolViolationException You must writ
  • 如何在启动时启动应用程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 如果您认为该问题与主题相关另一个 Stack Exchange 站点 您可以发表评论来解释问题可以在哪里得到解
  • 为了副作用而导入 ES6 模块的可接受做法?

    我喜欢保持代码模块化 因此我将此类代码放在单独的文件中 overrides extra js import Ember from ember Ember RSVP configure onerror function error expor
  • 在 Node 中仅获取 GET 请求的标头

    我需要得到Content Length and Content Type的标题large带有 Node js 的文件 不幸的是 我正在处理的服务器不允许HEAD请求 并且文件太大 无法生成完整的GET要求 我正在寻找类似这样的 python
  • 视觉工作室更新 2013 1,2,3,4,5

    只是想问一下 Visual Studio 2013 的更新 4 是否还包括更新 1 2 3 4 因为它是侧面唯一可用的东西 所以我无法下载 1 2 3 的更新 而且大小确实很大 包含大约 5 GB 的数据 是的 更新是累积的 安装 Upda
  • 仅在一列中交替行 - CSS

    如何仅在表格的一列中为交替行着色 代码是什么 正如 afranz409 所说 理想的解决方案是创建一个类 然而 这可以通过 CSS 特定解决方案来完成 浏览器功能有限 没有 IE 浏览器 table tr nth child 2n gt t
  • Python 将文件和目录从一个文件夹移动到另一个文件夹

    我想将一个目录中的 python 文件和目录移动到另一个具有覆盖能力的目录 我从以下代码开始 moving files from progs path tempfolder progs for dirs files in os listdi
  • 当浏览器调整大小时 CSS 媒体查询?

    我认为当用户调整浏览器大小时 CSS 媒体查询不起作用 用户必须刷新页面才能使媒体查询生效 我怎样才能用 JS 更新媒体查询 目前我使用 JS 来检测调整大小添加时的窗口大小addClass 您不需要 JS 即可让 MediaQueries
  • Matlab 灰度归一化

    我是 matlab 和图像处理的新手 在规范化方面遇到一些问题 但我不确定为什么 在我的代码中 我将图像作为黑白图像存储在 lim3 中 然后 minvalue min min min lim3 maxvalue max max max l
  • 如何在javascript中删除“:”之前的字符串部分?

    如果我有一个字符串Abc Lorem ipsum sit amet 如何使用 JavaScript jQuery 删除前面的字符串 包括 例如上面的字符串将变成 Lorem ipsum sit amet 这里不需要 jQuery 常规 Ja
  • Cstring 到 BYTE 的转换

    我正在使用 Visual Studio c 想要将 Cstring 转换为 Byte 我已经编写了这段代码 但它在第二行给了我错误 数据 未定义 CString data T OK LPBYTE pByte new BYTE data Ge
  • 无法替换字符串中的字符

    我试图遍历一个字符数组 并将字符串中的该字符替换为另一个数组中的并行字符 private String replace String input char first a e o s char second 3 0 String myCop
  • 如何在C#中拦截调试信息(Debugview风格)?

    出于测试目的 我计划组装一个小应用程序 该应用程序将侦听来自应用程序的特定事件并在此时与其交互 鉴于我们正处于测试过程中不可能更改应用程序代码的阶段 从我的角度来看 理想的做法是监听应用程序的调试跟踪 有点像 debugview 所做的那样