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) |
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/
Return to the
comp.compilers page.
Search the
comp.compilers archives again.