[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