Recently, for some reason, when you start the application, the CPU window
and the first breakpoint ntdll.dbgbreakpoint
started to open constantly. Unexpected breakpoints are repeated frequently and must be manually continued. This indicates any problems or lack of information for debugging in the application.
However, nothing has changed in the application, the Delphi settings have not changed. Where, then, unknown information? How to return to normal operation?
Let's see how the application uses the modules, for this we use the Event Log
window. We look at the list of events, find messages about module loading and check if the list of loaded modules has changed. If you notice a "newbie" (in my case it was verifier.dll), then most likely it is what it interferes with.
It may be part of any installed application or worm. The ownership of the module can be found by searching for its name on the Internet.
In my case, the reason was the Microsoft Application Verifier
. It is designed to test applications with unmanaged code. Once configured, at startup is embedded in the process to conduct the installed checks. I installed it a few days ago, set it up on my application and forgot that it is there!
If you have found another "newbie", then check the system with an antivirus, you may find the culprit.
Everything was easier for me, I deleted my application from under the supervision of the Application Verifier and everything returned to its proper place.
In Delphi 2007
and higher, the option " Don't stop on non-user breakpoints
" appeared, which allows you to skip such breakpoints.
An alternative is to use a patch
Also, a couple of variants of patches are found on the EDN forum