代码之家  ›  专栏  ›  技术社区  ›  user3482023

在选项卡中最小化表单时发生访问冲突

  •  0
  • user3482023  · 技术社区  · 12 年前

    如何调试此错误?

    Access violation at address 00498AD7 in module 'MyApp.exe' read of address 00000008
    

    我有一个应用程序,它有一个与客户端对齐的页面控件,当我在一个特定的tabSheet中时,如果我单击Windows最小化按钮,就会出现访问违规错误(并且应用程序最小化)。我可以把它最大化,看起来没什么问题。 但这条消息惹恼了我和我的客户。 而且它只发生在一个TabSheet中。当我在任何其他选项卡中时,当我最小化时,该错误不会出现。

    我想在搜索|转到地址…中输入错误编号。。。但它没有启用,所以我不能。 问题可能是什么? 我不使用动态创建的组件,它们都是在设计时添加的,所以这不可能是一个免费的问题。

    如何跟踪此问题的来源? 谢谢

    1 回复  |  直到 12 年前
        1
  •  2
  •   David Heffernan    12 年前

    您正在访问地址为8的变量。这通常意味着你有 nil 对象引用,并且您正在尝试访问偏移量为8的成员。地址 00498AD7 是导致故障的代码在可执行文件中的位置。如果您有可执行文件的详细映射文件,则可以将该地址交叉引用到程序中的函数。然而,这通常用处有限。

    调试这个很容易。确保调试器选项配置为在引发异常时在IDE中中断。然后在调试器下运行,当发生错误时,调试器将突出显示导致错误的代码行。或者您可能需要在两个级别上查找调用堆栈。

    除了直接的问题之外,使用madExcept或EurekaLog等工具可以让您在这些问题发生时对其进行调试。例如在客户的机器上。