DProf can be a pain, but it is the best one. I'd suggest you try to narrow down where it crashes and try to remove that code temporarily. Since DProf uses the debugger hooks, it probably crashes in the same place when run in the debugger.
Two pieces of general advice:
Always use wall clock time, not CPU time, when profiling a database application. It could be spending the majority of time waiting for responses to queries, which won't show up at all with the default of measuring CPU time.
When you find the problem, fixing Class::DBI performance problems often involves replacing Class::DBI calls with straight DBI calls inside a small performance-sensitive section of code.