[Lazarus] Debugger stops in c dll even when no breakpoint set
Luca Olivetti
luca at wetron.es
Fri Oct 29 10:41:24 CEST 2021
El 29/10/21 a les 10:15, Luca Olivetti via lazarus ha escrit:
> El 28/10/21 a les 14:46, Martin Frb via lazarus ha escrit:
>> On 28/10/2021 14:28, Christo Crause via lazarus wrote:
>>>
>>> On Thu, Oct 28, 2021 at 2:01 PM Luca Olivetti via lazarus
>>> <lazarus at lists.lazarus-ide.org> wrote:
>>>
>>>
>>> 77045AC4 cc int3
>>>
>>>
>>> The Int3 instruction means break, so this is the expected behaviour.
>>> If there is no debugger inserted break point for this location, it
>>> must be compiled into the dll code. This means not stopping here
>>> will be problematic, unless you use some kind of script to step over
>>> this break instruction automatically. I do not think it is possible
>>> from inside Lazarus, but haven't actually tried to work around
>>> something similar before.
>>>
>>
>>
>> FpDebug refers unknown "int3" back to the application, and lets the
>> application handle them itself.
>>
>> At least FpDebug does this by default. There is an option in the
>> global settings to stop.
>> But if the dll expects the int3, and therefore wants to handle it
>> itself.....
>
>
> Any hint on why it hits that int3?
>
> Now I recompiled pascallog.c (I changed its location, no wonder lazarus
> complained it couldn't find it), and lazarus instead of showing the
> assembler window shows the c file stopping at the call to "free".
>
> I checked and the pointer passed to "free" is the same that "malloc"
> returned.
>
> malloc ->
> https://github.com/fluisgirardi/fpopen62541/blob/d95839c908657f58bf2fde4533625a61cbccb8c7/pascallog/pascallog.c#L59
>
>
> free ->
> https://github.com/fluisgirardi/fpopen62541/blob/d95839c908657f58bf2fde4533625a61cbccb8c7/pascallog/pascallog.c#L51
I now tested under windows 10 64 bits (the exe is 32 bits, the previous
test was under windows 7 32 bits), and here instead of stopping once in
ntdll!RtlpNtMakeTemporaryKey it stops twice: in ntdll!RtlZeroHeap and in
ntdll!RtlCaptureStackContext.
The former (RtlZeroHeap) shows what it seems a bogus call stack (i.e.
just two levels, the RtlZeroHeap itself and 00000000).
Bye
--
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010) Fax +34 93 5883007
More information about the lazarus
mailing list