Re: need ideas on how to debug code generator

Joel Yliluoma <bisqwit@iki.fi>
28 Feb 2008 06:34:50 GMT

          From comp.compilers

Related articles
need ideas on how to debug code generator rambham@gmail.com (Ram Bhamidipaty) (2008-02-24)
Re: need ideas on how to debug code generator thomas@povtal.org (Thomas Have) (2008-02-25)
Re: need ideas on how to debug code generator n.pipenbrinck@cubic.org (Nils) (2008-02-26)
Re: need ideas on how to debug code generator bc@freeuk.com (Bartc) (2008-02-27)
Re: need ideas on how to debug code generator bisqwit@iki.fi (Joel Yliluoma) (2008-02-28)
| List of all articles for this month |
From: Joel Yliluoma <bisqwit@iki.fi>
Newsgroups: comp.compilers
Date: 28 Feb 2008 06:34:50 GMT
Organization: TDC Internet Services
References: 08-02-079 08-02-089
Keywords: debug, code
Posted-Date: 28 Feb 2008 10:44:39 EST

On Sun, 24 Feb 2008 21:47:50 -0800, Ram Bhamidipaty wrote:
> Hi,
>
> I have a small code generator - for 32 bit x86 machines, unfortunately it
> has some bugs :-(. My problem is that the generated code fails
> "once in a while" sometimes it can go for 20-40 iterations before failing.
>
> I have a collection of test cases where I verify the correctness of
> various simple constructs -- things like load, store, add, sub, etc.
> Those all pass.
>
> The test case in question generates a code sequence of about 400 bytes. It
> fails by seg faulting, unfortunately gdb is unable to print out a
> useful stack trace.
>
> What are some techniques that people have used for debugging code
> generators?


I am assuming you use a combination of a mprotect(..., PROT_EXEC)
and a cast into a function pointer to run generated code.


GDB can do generated code debugging tolerably, if you use a combination
of "display /i $pc", "stepi" and "disassemble <address1> <address2>".


When the program segfaults, you'll get the address and the exact
opcode that caused the segfault, and you can use disassemble to find
out about the surrounding context. Additionally, you can use "display
/i $registername" and "stepi" to singlestep through the generated
program.


((Reposting, because I did not receive a moderation queuing notification.))


--
Joel Yliluoma - http://iki.fi/bisqwit/


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.