【问题标题】:Is there a way to detect if the debugger has been used, from within the program being debugged?有没有办法从被调试的程序中检测是否使用了调试器?
【发布时间】:2016-06-01 17:07:17
【问题描述】:

我在我的程序中有一个内部一致性检查,用于验证相同代码的两次运行、相同的输入是否给出相同的结果。这个想法是在开发过程中检测下落不明的输入。如果检查失败,则进入调试器。

这一切都很好而且很花哨,直到调试器中的一些其他操作——尤其是编辑并继续——在执行过程中修改了一次运行。我想检测到这一点并禁用一致性检查。

显然因为检查本身需要调试器,所以我不能做一些简单的事情,比如检查Debugger.IsAttached

【问题讨论】:

  • @JoelB 这实际上非常可行!特别是因为有问题的代码故意不受 IO 限制。它还检测到其他调试器篡改,这在我的情况下很好。更不用说简单是一个很大的胜利。我现在就去试试……
  • @JoelB 效果很好。如果你想把它变成答案,我会接受。
  • 考虑完成。 :P

标签: c# .net visual-studio visual-studio-2010 edit-and-continue


【解决方案1】:

我唯一能想到的就是使用某种时间安排(这似乎是个糟糕的主意)。如果完成一项任务所需的时间比平时高出几个数量级,则可能表明某些东西正在被篡改。如果涉及磁盘读/写等事情,这可能会导致大量误报。同样,这不是一个好主意,只是一个想法

【讨论】:

    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 2011-01-12
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多