Hi, Currently debugging Cmm is a bit painful because we don't have enough debug information to map assembly to Cmm lines, so I have do the mapping manually. However I realized that when building .cmm files we actually generates some debug information, in form of "ticks":
//tick src<rts/Apply.cmm:631:9-37> _c2e::I64 = I64[R1 + 32]; Here the tick says that this assignment is for this Cmm line in Apply.cmm: Words = StgAP_STACK_size(ap); I was wondering what needs to be done to generate DWARF information from those so that gdb can show Cmm line we're executing, and gdb commands like `next`, `break` etc. work. I also realize that we don't consistently generate these ticks for all Cmm lines, for example, in the same Cmm dump there isn't a tick before this line: (_c2j::I64) = call MO_Cmpxchg W64(R1, stg_AP_STACK_info, stg_WHITEHOLE_info); It's actually for Apply.cmm:646. So there are two problems: - Generate ticks for _all_ Cmm lines - Generate DWARF information from those so that gdb can show current Cmm line, and commands like `next` and `break` work. Anyone know how hard would this be to implement? I'm wondering if we could turn this into a SoC project. It's a very well defined task, and given that we have some DWARF support already, perhaps it's not too hard for a SoC. Ömer _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs