Mail Archives: djgpp/2002/09/14/13:17:00
On Saturday 14 September 2002 18:53, Gisle Vanem wrote:
> Hi,
>
> I have a strange situation where running a program under a debugger
> (RHIDE or GDB) will hang the debugger on the call to a particular
> function. So I need to prevent calling this function when the program
> is a debugee. How do I detect running under a debugger?
>
> For the record, here is that function:
>
> static inline void Wait (void) /* wait until timer changes */
> {
> unsigned long t = _farpeekl (_dos_ds,0x46C);
> while (_farpeekl(_dos_ds,0x46C) == t)
> ((void)0);
> }
>
It's generally not a good idea to do such wait in so tight loop.
Such loop perhaps does not touch any memory using DS
segment register (only a guess as I did not tried to compile and
inspect generated assembler source), so it's not interruptable with Ctrl-Break
or Ctrl-C. Therefore I would suggest to call __dpmi_yield() in loop and see
whether problem remains instead of trying to detect when a programm is being
run under debugger
Andris
- Raw text -