我没设断点,并清了所有断点,但还是断了。
NTDLL! 77f813b1  看汇编在INT 3中断。不知什么原因,如何解决

解决方案 »

  1.   

    你的程序出现异常了,察看callstack看看是哪个地方出现的问题
      

  2.   

    两位好,我用VC6 access 做一个小程序,其中有调用IE. 访问一个站点,call stack具体如下
    NTDLL! 77f813b1()
    _CrtDbgReport(int 2, const char * 0x00650f40 THIS_FILE, int 313, const char * 0x00000000, const char * 0x00000000) line 353
    AfxAssertFailedLine(const char * 0x00650f40 THIS_FILE, int 313) line 39 + 19 bytes
    CWnd::FromHandlePermanent(HWND__ * 0x000306a2) line 313 + 32 bytes
    CFrameWnd::BeginModalState() line 365 + 23 bytes
    CFrameWnd::OnEnable(int 0) line 467
    CWnd::OnWndMsg(unsigned int 10, unsigned int 0, long 0, long * 0x0012a09c) line 1840
    CWnd::WindowProc(unsigned int 10, unsigned int 0, long 0) line 1596 + 30 bytes
    AfxCallWndProc(CWnd * 0x020347b8 {CMainFrame hWnd=???}, HWND__ * 0x000206a0, unsigned int 10, unsigned int 0, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000206a0, unsigned int 10, unsigned int 0, long 0) line 379
    USER32! 77df1ef0()
    USER32! 77df3869()
    USER32! 77df38ab()
    NTDLL! 77f9ff57()
    USER32! 77e0fd24()
      

  3.   

    可能是窗口句柄的问题,比如说CWnd对应的窗口被使用Win32 API关闭了。那么调用这个窗口类函数的时候就会出问题。
      

  4.   

    CWnd::FromHandlePermanent(HWND__ * 0x000306a2) line 313 + 32 bytes
    CFrameWnd::BeginModalState() line 365 + 23 bytes
    CFrameWnd::OnEnable(int 0) line 467
    CWnd::OnWndMsg(unsigned int 10, unsigned int 0, long 0, long * 0x0012a09c) line 1840
    看上面哪个是你写的 就是它引起的了
    顶!
      

  5.   

    我上次也碰到的。
    vc写了个简单的access程序。
    主程序和recordset中的数据都是用的结构体,当读recordset的数据时,如果用memcpy直接拷贝结构体的内容是,程序退出时也出现类似情况。
    而一个一个变量赋值是,就没有这个错误。
      

  6.   

    To: j805(这儿) 你好。能否具体说说你的做法。
      

  7.   

    在调试程序中遇到提示“user breakpoint called from code at 0x......(地址)”时,这并不一定是因没用户设置了断点的关系,而是因为系统执行了一个硬编码断点操作(hard coded breakpoint instruction)。例如在Windows NT下当正被调试的应用程序获得焦点时,如果F12键按下,则Windows NT调用一个类似于DebugBreak()函数的函数,这个被调用的函数执行一个hard coded breakpoint instruction,于是调试器捕捉到这个操作产生的例外,所以中断并给出上述的提示(User breakpoint called from code at <address>)或者是给出Break caused by hard coded breakpoint instruction.,在这样的情况下,只要让调试继续进行即可(按下F5键)。值得注意的是当程序涉及到全局性的共享内存(对象)时,如CShareFile,这些对象维护着一个全局性的内存块,如果因为程序的疏忽对仍然锁定的对象(locked object)进行释放内存的话,则在NT下也会出现User breakpoint called from code at <address>这样的提示。此外,在低版本的Visual C++调试器中,在不少地方(例如一些有关打印设备的操作)都用到GlobalLock,编程不当也会导致上述的提示出现,不过在win32中,很多这样的调用已经不再必要了。希望这些信息能对您有所帮助,建议您检查一些是不是程序当中有一些涉及到释放全局性内存的操作。