From: Martin Str|mberg Message-Id: <200101231735.SAA21377@father.ludd.luth.se> Subject: Re: Debugging on 386 In-Reply-To: <3405-Mon22Jan2001221957+0200-eliz@is.elta.co.il> from Eli Zaretskii at "Jan 22, 2001 10:19:58 pm" To: djgpp-workers AT delorie DOT com Date: Tue, 23 Jan 2001 18:35:52 +0100 (MET) X-Mailer: ELM [version 2.4ME+ PL54 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk According to Eli Zaretskii: > > -> c > > Breakpoint 1, main (argc=1, argv=0x905d4) at analyse_ints.c:129 > > 129 if( argc != 2) > > -> bt > > #0 main (argc=1, argv=0x905d4) at analyse_ints.c:129 > > #1 0x3368 in __crt1_startup () > > -> n > > Exiting due to signal SIGFPE > > This one is not. What does "disassemble analyse_ints" print near the > EIP of the breakpoint (0x1a64)? Do you see any FP instructions > anywhere around that? Here's the disassembly (-> disass main): Dump of assembler code for function main: 0x1a58
: push %ebp 0x1a59 : mov %esp,%ebp 0x1a5b : sub $0x7c,%esp 0x1a5e : push %edi 0x1a5f : push %esi 0x1a60 : push %ebx 0x1a61 : mov 0xc(%ebp),%edx 0x1a64 : cmpl $0x2,0x8(%ebp) 0x1a68 : je 0x1a84 0x1a6a : mov (%edx),%eax 0x1a6c : add $0xfffffff8,%esp 0x1a6f : push %eax 0x1a70 : push $0x1810 0x1a75 : call 0x3800 0x1a7a : add $0xfffffff4,%esp As you can see no floating point instructions anywhere. > > Coprocessor Error at eip=00001a64, x87 status= > > Program received signal SIGEMT, Emulation trap. > > 0x9611 in _status87 () > > -> bt > > #0 0x9611 in _status87 () > > #1 0x47da in do_faulting_finish_message () > > #2 0x4d13 in __djgpp_traceback_exit () > > #3 0x4da0 in raise () > > #4 0x2c3a in nofpsig () > > #5 0x4daa in raise () > > #6 0x4e07 in __djgpp_exception_processor () > > #7 0x1 in ?? () > > #8 0x3368 in __crt1_startup () > > This is expected: the code which prints the traceback calls > _status87. But what is that 0x1 on the stack? I can't explain it but it seems to be the value of argc (or a copy of it) because if I try to run the program with "r a" it becomes 0x2 and with "r 2 b" it becomes 0x3. Right, MartinS