<p>Does anyone know of a disassembler for <em>ARMV4i</em> executables and DLLs?</p>

<p>I've got a plug-in DLL I'm writing with a very rare <code>data abort</code> (&lt;5% of the time) that I have narrowed down to a specific function (via dumpbin and the address output by the <code>data abort</code>).  However, it is a fairly large function and I would like to narrow it down a little.  I know it's happening in a <code>memset()</code> call, but that particular function has about 35 of them, so I was hoping that by looking at the disassembly I could figure out where about the problem actually is.</p>

A couple of years ago I found an ARM disassembler I used while doing some embedded work. However, I don't remember its name - though I think it was part of a larger package like an emulator or something.
In your case, could you ask your compiler to generate an assembly listing of the compiled code? That might help give you some scope.
Failing that, you could break up your function into one or more new functions, if all you can get is the stack trace. Then break up the new function into one or more again. This is the tried-and-true "divide and conquer" method. And if you have 35 calls to memset() in one function, it might be a good idea from a design standpoint too!
Update: I found the package I used:
ARMphetamine
. It worked for the ARM9 code I was developing, but it looks like it hasn't been updated in quite some time.