[Mono-dev] How to debug native code?
Bill Seurer
seurer at linux.vnet.ibm.com
Wed Jan 20 22:45:08 UTC 2016
When I am debugging problems with native code I use gdb to debug it. I
have used other debuggers, too.
If you watch the commands that are running you should be able to see
when the mono program is called. Note the parameters. Then run the
debugger on mono and then run the program within the debugger using the
parameters you noted. When the segmentation fault occurs you can see
where it happened.
If you add -v options on mono (try using more than one) you can get a
trace of what native functions are called and the assembler for those
functions.
Within the debugger you can use this command:
print mono_pmip($pc)
to see the name of the native function you are inside of.
On 01/18/16 20:14, Pin Cheng wrote:
> Hi all,
>
> I am trying to port Mono into Aix host, I have am very fundamental question:
>
> How are you guys debug native code?
>
> Because JIT compiler compiles assembly into native code then JIT invoke it,
>
> I am very curious if there errors in native code How do you find out the
> bug and fix it.
>
> And if you updates the cpu-<ARCH>.md or <ARCH>-codegen.h how do you
> verify your changes is ok?
>
> There must be somewhat effect method to debug the JIT and it specific
> architecture.
>
> Since I am porting Mono into Aix, I got assembler code which
> disassembled from native code:
>
> 0: 7c 08 02 a6 mflr r0
>
> 4: 90 01 00 04 stw r0,4(r1)
>
> 8: 94 21 ff b0 stwu r1,-80(r1)
>
> c: 93 61 00 48 stw r27,72(r1)
>
> 10: 93 e1 00 4c stw r31,76(r1)
>
> 14: 7c 3f 0b 78 mr r31,r1
>
> 18: 90 7f 00 28 stw r3,40(r31)
>
> 1c: 90 9f 00 2c stw r4,44(r31)
>
> 20: 90 bf 00 30 stw r5,48(r31)
>
> 24: 90 df 00 34 stw r6,52(r31)
>
> 28: 38 60 00 00 li r3,0
>
> 2c: 90 7f 00 20 stw r3,32(r31)
>
> 30: 38 60 00 00 li r3,0
>
> 34: 90 7f 00 24 stw r3,36(r31)
>
> 38: 80 7f 00 30 lwz r3,48(r31)
>
> 3c: 2c 03 00 00 cmpwi r3,0
>
> 40: 41 82 00 a4 beq 0xe4
>
> 44: 3c 60 20 03 lis r3,8195
>
> 48: 60 63 e5 04 ori r3,r3,58628
>
> 4c: 80 63 00 00 lwz r3,0(r3)
>
> 50: 2c 03 00 00 cmpwi r3,0
>
> 54: 41 82 00 38 beq 0x8c
>
> 58: 3d 80 30 3c lis r12,12348
>
> 5c: 61 8c cd d8 ori r12,r12,52696
>
> 60: 7d 88 03 a6 mtlr r12
>
> 64: 4e 80 00 21 blrl
>
> 68: 7c 64 1b 78 mr r4,r3
>
> 6c: 7c 9b 23 78 mr r27,r4
>
> 70: 2c 03 00 00 cmpwi r3,0
>
> 74: 41 82 00 18 beq 0x8c
>
> 78: 7f 63 db 78 mr r3,r27
>
> 7c: 3d 80 30 00 lis r12,12288
>
> 80: 61 8c 82 90 ori r12,r12,33424
>
> 84: 7d 88 03 a6 mtlr r12
>
> 88: 4e 80 00 21 blrl
>
> 8c: 80 7f 00 2c lwz r3,44(r31)
>
> 90: 80 83 00 00 lwz r4,0(r3)
>
> 94: 80 7f 00 28 lwz r3,40(r31)
>
> 98: 80 bf 00 34 lwz r5,52(r31)
>
> 9c: 7c a8 03 a6 mtlr r5
>
> a0: 4e 80 00 21 blrl
>
> a4: 48 00 00 38 b 0xdc
>
> a8: 80 7f 00 1c lwz r3,28(r31)
>
> ac: 80 7f 00 1c lwz r3,28(r31)
>
> b0: 90 7f 00 24 stw r3,36(r31)
>
> b4: 80 7f 00 30 lwz r3,48(r31)
>
> b8: 80 9f 00 24 lwz r4,36(r31)
>
> bc: 90 9f 00 40 stw r4,64(r31)
>
> c0: 90 83 00 00 stw r4,0(r3)
>
> c4: 3d 80 30 3c lis r12,12348
>
> c8: 61 8c cf 50 ori r12,r12,53072
>
> cc: 7d 88 03 a6 mtlr r12
>
> d0: 4e 80 00 21 blrl
>
> d4: 80 7f 00 40 lwz r3,64(r31)
>
> d8: 48 00 00 04 b 0xdc
>
> dc: 80 7f 00 20 lwz r3,32(r31)
>
> e0: 48 00 00 38 b 0x118
>
> e4: 3c 60 20 03 lis r3,8195
>
> e8: 60 63 e5 04 ori r3,r3,58628
>
> ec: 80 63 00 00 lwz r3,0(r3)
>
> f0: 28 03 00 00 cmplwi r3,0
>
> f4: 40 82 00 40 bne 0x134
>
> f8: 48 00 00 04 b 0xfc
>
> fc: 80 7f 00 2c lwz r3,44(r31)
>
> 100: 80 83 00 00 lwz r4,0(r3)
>
> 104: 80 7f 00 28 lwz r3,40(r31)
>
> 108: 80 bf 00 34 lwz r5,52(r31)
>
> 10c: 7c a8 03 a6 mtlr r5
>
> 110: 4e 80 00 21 blrl
>
> 114: 80 7f 00 20 lwz r3,32(r31)
>
> 118: 80 1f 00 54 lwz r0,84(r31)
>
> 11c: 7c 08 03 a6 mtlr r0
>
> 120: 7f ec fb 78 mr r12,r31
>
> 124: 83 7f 00 48 lwz r27,72(r31)
>
> 128: 83 ff 00 4c lwz r31,76(r31)
>
> 12c: 38 2c 00 50 addi r1,r12,80
>
> 130: 4e 80 00 20 blr
>
> 134: 3d 80 30 3c lis r12,12348
>
> 138: 61 8c cd d8 ori r12,r12,52696
>
> 13c: 7d 88 03 a6 mtlr r12
>
> 140: 4e 80 00 21 blrl
>
> 144: 7c 64 1b 78 mr r4,r3
>
> 148: 7c 9b 23 78 mr r27,r4
>
> 14c: 2c 03 00 00 cmpwi r3,0
>
> 150: 41 82 ff ac beq 0xfc
>
> 154: 7f 63 db 78 mr r3,r27
>
> 158: 3d 80 30 00 lis r12,12288
>
> 15c: 61 8c 82 90 ori r12,r12,33424
>
> 160: 7d 88 03 a6 mtlr r12
>
> 164: 4e 80 00 21 blrl
>
> This code leads to core dump, it is the body of
>
> method ((wrapper runtime-invoke)
> <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr))
>
> From such code, How could I tell where leads to core dump?
>
> Please help me or give me a clue.
>
> Thank you very much!
>
> *//*
>
> */Pin /*
>
> ================================
> Rocket Software, Inc. and subsidiaries ■ 77 Fourth Avenue, Waltham MA
> 02451 ■ +1 800.966.3270 ■ +1 781.577.4321
> Unsubscribe From Commercial Email – unsubscribe at rocketsoftware.com
> Manage Your Subscription Preferences -
> http://info.rocketsoftware.com/GlobalSubscriptionManagementEmailFooter_SubscriptionCenter.html
> Privacy Policy - http://www.rocketsoftware.com/company/legal/privacy-policy
> ================================
>
> This communication and any attachments may contain confidential
> information of Rocket Software, Inc. All unauthorized use, disclosure or
> distribution is prohibited. If you are not the intended recipient,
> please notify Rocket Software immediately and destroy all copies of this
> communication. Thank you.
>
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
--
-Bill Seurer
More information about the Mono-devel-list
mailing list