Анализ аварийных дампов

В случае, если установлена переменная окружения ELCORE_DUMP и выполнение программы завершается с фатальным исключением (обращение по неверному адресу, выполнение неизвестной инструкции, целочисленное деление на ноль и т.д.), в текущей директории создается файл аварийного дампа. Аварийный дамп содержит копию адресного пространства DSP на момент падения программы. Анализ дампов осуществляется с помощью утилиты elcoredump-reader и позволяет найти причину ошибок, приведших к фатальному исключению.

Все команды вводятся в терминал утилиты при запуске командой:

elcoredump-reader -v </path/to/coredump> -e </path/to/elf>

Чтение аргументов задачи

> kargs
argv[0]: /usr/share/elcore50-extra/test-elcoredump-reader
argv[1]: 1234567890ABCDEF

Чтение регистров

Вывод информации о поддерживаемых регистрах

> regs info
Available registers:
L0dc_ctrl L1dc_L2rcnt L1dc_L2rrcnt L1dc_L2wcnt L1dc_ctrl L1dc_ecnt L1dc_pcnt L1dc_rcnt
L1dc_rmcnt L1dc_rscnt L1dc_ucnt L1dc_wcnt L1dc_whcnt L1ic_ctrl L2_araxi L2_awaxi
L2_bwaxi L2_ctrl L2_evict L2_flush L2_raxi L2_rhit L2_rmiss L2_rrec L2_rsent L2_ruc
L2_waxi L2_whit L2_wmiss L2_wrec L2_wuc asid bapc cmd_cntr cregions csp ctrl dcsr dmaskr dqstr
drtar dvar ertar evar idr imaskr index instr_cntr invaddr invctrl irq_index irqr irtar ivar
la(0..3) lb(0..3) lc(0..3) m(0..1) mbarreg mregions p(0..7) pc ptw_cfg ptw_pba_h ptw_pba_l
rf(0..31) swaitreg(0..1) tic_cntr tlb_ctrl tlbxcpt(0..3)(0..2) tmr tmrc uipc vdma_abcnt(0..3)
vdma_ae_h(0..3) vdma_ae_l(0..3) vdma_ai_h(0..3) vdma_ai_l(0..3) vdma_cfg(0..3) vdma_csr(0..3)
vdma_done(0..3) vdma_init(0..3) vdma_init_h(0..3) vdma_init_l(0..3) vdma_irq(0..3)
vdma_irqm(0..3) vdma_irqt(0..3) vdma_offset_e(0..3) vdma_offset_i(0..3) vdma_run(0..3)
vfh(0..63)(0..3) vfl(0..63)(0..3) vp(0..7) vwaitreg(0..1)

Примечание

Описание регистров приведено в документе DSP-ядро Elcore50. Руководство программиста.

Чтение всех регистров

> regs
RF00:        0000000000000000 000000002001A610 0000000000000003 0000000002E00000
RF04:        0000000000000020 1234567890ABCDE0 000000000000000F 0000000000000130
RF08:        1234567890ABCDEF 1234567890ABCDF0 1234567890ABCDF1 1234567890ABCDF2
RF12:        A80E15482011B9E8 8CC4DEC12011B9A8 132E5F0C00000000 71C85CC02000015C
RF16:        8900000000000000 311032A3BAA67800 00000000000000CC 208626D700000000
RF20:        CD084A5D2001BCF8 8C04F11400000001 620889AA00000000 181D20C600000000
RF24:        0000000000000008 0000000000400042 0000000000000000 0000000000000002
RF28:        529B701600000008 89D12E84C5000400 249075663208402B 45D2C0CE3EFF0612
DCSR:        00000000 IDR:    326A1201
PC:          200003C0 IVAR:   02F00F00 IRTAR:  20000604 EVAR:   02F00F00
ERTAR:       20000604 DVAR:   02F00F00 DRTAR:  20000604
TMR:         0000000000000000 TMRC:  0000000000000000
TCNTR:       0000000000005FCD ICNTR: 0000000000000397 CCNTR: 0000000000000514
P0:          00000001 00000001 00000000 00000000
P4:          00000000 00000000 00000000 00000000
VP0:         0000000100000001 0000000000000000 0000000000000000 0000000000000000
VP4:         0000000000000000 0000000100000001 0000000100000001 0000000100000001
CSP:         00000000
LC0:         00000000 00000000 00000000
LB0:         00000000 00000000 00000000
LA0:         00000000 00000000 00000000
IRQ_INDEX:   00000011 IRQR:    00020000 IMASKR:   00000000 DQSTR:   00020000
M0:          FFFFFFFF FFFFFFFF
CTRL:        8FD13FF2 INVCTRL:   0000FF80 INVADDR:   00000000
ASID:        00000000 CREGIONS:  FFFFFFFF MREGIONS:  FFFFFFFF
SWAITREG0:   00000000 SWAITREG1: 00000000 VWAITREG0: 00000000 VWAITREG1: 00000000
MBARREG:     00000000
L0DC_CTRL:   00000005 L1IC_CTRL:   00000199 L1DC_CTRL:    28004B41 L2_CTRL:     41E00800
L1DC_RCNT:   00000020 L1DC_RMCNT:  00000009 L1DC_PCNT:    000000C7 L1DC_WCNT:   0000000C
L1DC_WHCNT:  0000007A L1DC_L2RCNT: 000000D0 L1DC_L2RRCNT: 000000D0 L1DC_L2WCNT: 00000014
L1DC_ECNT:   00000003 L1DC_UCNT:   00000000 L1DC_RSCNT:   00000029
L2_RREC:     00000000 L2_RSENT:    00000000 L2_WREC:      00000000 L2_RHIT:     00000000
L2_RMISS:    00000000 L2_RUC:      00000000 L2_WHIT:      00000000 L2_WMISS:    00000000
L2_WUC:      00000000 L2_EVICT:    00000000 L2_FLUSH:     00000000 L2_ARAXI:    00000000
L2_RAXI:     00000000 L2_AWAXI:    00000000 L2_WAXI:      00000000 L2_BWAXI:    00000000
VF00H:       0000000000000000 0000000000000000 0000000000000000 0000000000000000
VF00L:       0000000000000000 0000000000000000 0000000000000000 0000000000000000
VF01H:       0000000000000000 0000000000000000 0000000000000000 0000000000000000
VF01L:       0000000000000000 0000000000000000 0000000000000000 0000000000000000
VF02H:       DC7B2E90D0D00B2C 13540499D90A9B0B F1C16A953E63B544 E0F02935F9113B04
VF02L:       6F53ED1B1AA0FE41 79039CE065FD90E8 D6DCEFAE6944FEDE B91FCD7886286E3C
VF03H:       6271BA5CA0D79BAE 2CF02F210CD707D5 FD4A81968F04D1C6 3A45727035B14509
VF03L:       1DAF13BFD8DC8FF7 4ACFCD0A188DF6CC 858F240C989FBE39 25266ABE80409D20
VF04H:       720804926E04FA40 10E136B0C10C7348 D09ED4C609E184A1 ED85986D01612845
VF04L:       8C839AD2661B0100 9E1308787B1C20F9 0A9EC231ABF86E21 0C48242D3474D71A
VF05H:       DD87A2C152F286C0 C0C33ACF862E9008 D813D469A372C511 72EAD90CE677D9B4
VF05L:       52C0C232C8E89F9E 7993326956B1E25B 1B55DE6DCCA627BC 104065B4EC1A8728
VF06H:       A93B8833F640823F 3972CE934D1F5FD6 4451094F927B3AE2 3454047508939AF0
VF06L:       2C0B99C041A500EC 1AC82200E0E0B182 86AFDB16659DDC68 B7FD1EC4915CE1B6
VF07H:       C911382988D0F876 08B2544CE3408EDB AA2B5A34647EA187 FCC0F7EC1D97D3A9
VF07L:       F808E3EFBFE7A528 0A0850C38B1BFD4D B1B988B910E78DAA 8508DF2AC1E600A8
VF08H:       D24400444EC79631 2E122F21C2BACEB0 A11B41F06713C38F D48B8764825F0532
VF08L:       F885BD89B000D845 D0D2431074FF4AB4 CF40D87A614B3A7D 087E6F97FBDA0547
VF09H:       9A6A1F01101B4800 C428638189742651 0EB24500FD86A726 318934DB560802C9
VF09L:       54BE1873C99BAFF4 F3E708A929803450 58EF043A2022EE62 364C08A37A2B81D5
VF10H:       9896000C0C478288 14217BA802045DDB F4E80B5010054880 D067F91BDD8A294A
VF10L:       80A05F3239C70005 3690E406F465DC3B 8E5B5C1F87026F3D 9F8C9846D05D600F
VF11H:       BF2CB38B65BC609A D82500F60082DD3B C5500E88013B638D B5B04057850E48C5
VF11L:       1C00E4047081ECE7 0627EA90BFD15F28 6FFA1C89B12D604A 476896E2FD372DA6
VF12H:       9C2FA69E95D1E702 C83926004008F0F2 38BC261C21EE03B2 D924E4041B103C03
VF12L:       31E2CC1D18A61189 C0F9E203909819BF 6DC47571A4F44325 7F1BF69F22B6BB9C
VF13H:       4088059A52FC9044 0417AE2E8CBCBF40 53A61B5C9A944321 B090A6F01CDFDD1A
VF13L:       623ADC6DE9C08510 F5FB78E2CDEE5A7D 5621B98202E809E4 45F303F8145D5A06
VF14H:       92CB74322F84049B 2FA0DFE3FDBDA56B 60DBA4C33A15D6A5 88131201DA81448B
VF14L:       9812283792ADFFE8 C7042A39BE98923C D65F007D3BB799AA 3BA0804ED027000F
VF15H:       E23B09F05807C6D6 740420AB404200E1 05015C88088E2820 D923620029054440
VF15L:       2DCB130F24BEC261 E083ABE1E198222A C86A11FBDE6EE309 B0ACC9D7EA0407EE
VF16H:       08E19810B04A08A2 93EF32F85F1A9871 34029D84316BC0F4 678E17248336501F
VF16L:       041782C269D2934A 1EF2044D2CF9F2DA 534EAF5BD55DCFF0 430412FA945BF55B
VF17H:       7EF2F98A600F2B05 035F44E484DB63D2 9C8B25581283A662 185EC794D2728966
VF17L:       C208B163AAB402B4 944663E727EDA1CF 34315A10BBBD09D1 C85BA51B9CFD7203
VF18H:       98A46A50C47E0400 309BCF9E008AEC1B 40C690DE7A986086 C0401AAFF950BBDF
VF18L:       5C6C3C1C6B9CCF3B 60C1CFCF62B8478C FC22D2F790F5AAE6 701187F45FE25E10
VF19H:       CAE161004A31194C D93565D9D6610265 E5105F0984924082 01316D0C643F9841
VF19L:       635313CB140E0920 7F4DA01FE63B66FF DEC5301F3776B797 B3C2E4187D689F63
VF20H:       3A059B5340230583 86CADFCB5EDE0390 1892F8F42EC7AE00 1EB3C57D937F9440
VF20L:       9FC580FA19C5D921 A971FBA0B67E75AF A70611AA5A9D67C2 B9488B9771B5CD58
VF21H:       B4B706EA36172224 B6625EBD2BE1FF8C 5627752505661DFA 315B2F22D4598B8C
VF21L:       02D88F0BC6E91FEC 249B028B1F5FF7A1 0CC718ED40B87BC9 38B40FDDB2F10677
VF22H:       7C88767D44116B04 81042506A01629EF 708F01381F703431 693CCEB9ACBDD058
VF22L:       7F0933DBA8A63A52 D4909EEA6206A2D1 512418CE7BDBF746 50B0361C7C6C101F
VF23H:       94FFC85E422828F0 3B759334ACC4F2E0 C2A690ABE9400C63 11528004EBB2D843
VF23L:       B11040F90B76B3B7 C6FF066CE4CB4CDF FF6127879325D2A6 15BD2E9F65B73FC8
VF24H:       5F5120D012B45382 59C1ECBC3930BC88 C32400C834046C5F ED398738E5811AC0
VF24L:       667B7ECFF6062E19 1B0B84702A4A1C80 D5FCA8DB73F2DF6C 9600E6160061D7E7
VF25H:       511C320F69331443 203C1B13BA16281C 1609FFEE50000892 1AF613AD7340C040
VF25L:       5E12CFDB4A756748 430F55C0ED0EBCB3 4572A8EA24DB19AB CE8572704FFC6157
VF26H:       6380399287AF81AB 20E71C7C7520E983 4AC46334200002AD A07FC601DA158A49
VF26L:       CD0D354A965922E1 0834B11E75264AD3 7402867AAE3030BF 487EA5DD14FD89C8
VF27H:       5D820A5C9E2C3080 E8E9DE4DF6C760EA C08F234A1408C071 8D5EC737E0AB24C0
VF27L:       B142A5EA85FB4244 B7481455B5A06311 7A5B3CA42DDF5744 30EFE6D40C1F8435
VF28H:       DEAA74EF665D1C94 9519DABFBD87D73D 1E9C010295411625 AD613478F92D61B0
VF28L:       0080AA8D0400D6D8 9BC60808FEC57513 2A39FC8B9AD5268B 6120357240BDB6C9
VF29H:       1070CA478C0C432D 54A7365C5C347A89 819C6F61F82D83E5 4F4BAAEC429047A9
VF29L:       B8AE867549D33E6A 3E52817C3A00D49A 385A04B627F6CCBE 7069AB8F60762392
VF30H:       A10202A981D5B10C 1B887EE9B4702212 DCEAC05EEC7F56EB 4C3714A870C0B2A0
VF30L:       F65708949788A6A1 58593982BD99C81E A65ADA46D7A92A34 663ECF962CB02C3F
VF31H:       F51423036B329525 F07286212C040782 90BE4FCB010260FC 2DE179BA471A4623
VF31L:       113AE49E996988E0 4D17A23B6010975B D3A190FC56D449A5 CE80243E1FEF0CEF
VF32H:       232147C27ECF211C 4726E71612BEBCFF 3638079E186D2F01 C51DEB39D3D254EF
VF32L:       9A7AB385DF176444 5144B43BF879BAED EC745C9EA3FCE07A CD175D7A5A29BF26
VF33H:       2C092930188338E2 4CDF5650E01DB313 883E46202BE413C3 A221BED16D0A0D88
VF33L:       F970CE5400343FC3 84BFE88CDF7000E8 4581A1E44DD8DD3B 854F928A0FF79AF5
VF34H:       CC8D1F5C80BEE80C F140232F7B2F1163 3C3463AD82E821E5 70C76113B474BEEF
VF34L:       9DD3001B1E21ED87 67CA92D880D05D0C E0A8A6C5AA743796 2F20ABC04BEAE122
VF35H:       791C360001034060 0968863C76DD5E92 138898D99093F294 427001ABDB710170
VF35L:       883FEE8A22CC3982 1C591F175190041C 60A7BEBB27E1FE24 CC0820641231C82E
VF36H:       5893313442E8204D ACAFF63B066FF6E7 200050011DC00910 C1559AF6E88CB912
VF36L:       10C93F066A4788DB 1FF70579D20C0706 DF803F8BD1A87D95 967CF5755C14CFE6
VF37H:       CDA288610A04511C 5880F9CEB2B0BC10 A1355CDB6FC27753 2B389104B82CBD8C
VF37L:       BDA59716355B74AD 707E538D3295FEDB 5929E011F8FB26EF EED0E600A6FFFFBD
VF38H:       716F180099B081C7 ECD7C42C551C5000 A5009043310877A3 52252300454D010C
VF38L:       D878006E2F173AA0 96B836EDCDDF84DD 96DC405120DB53CC 428E40FDB25A14E4
VF39H:       5B7B2328406598E6 5061040B066DAAD5 10A433F82B051808 A64050FE1869DF2C
VF39L:       AE76D5F0FE150961 85B08140DCD5E377 7FB29841DE5164C6 4814101F6C1C9FC8
VF40H:       085D9192F31A22A0 CA5A12E762C565FB 419CA0024076ED2C 04AEBE11DB482A0F
VF40L:       DBB9105849C02C77 F55188A1929C9581 E39C9BFDE4E56538 80E7336E4343B98C
VF41H:       5DCEA13321A87019 225525CFD3D8AA88 0C70B7FEA2561C3E 04903C001000228A
VF41L:       0548AE7E1D43A6A4 2DCF9B6C5ED72525 5BE80FE66305AC95 03DE5A088F8001CC
VF42H:       86A0D0C025D4F6F1 C091F545FEBAA96A A49DB568FF9C6449 74C3097212D99036
VF42L:       0FB394817F0A6B67 3F83DAE8BEDD3288 9EBA1CA01B3A5CFD 9E241A00A85E28B5
VF43H:       B6E629030CB5E7B8 F65CF75FDCF17B22 F8DD666913C91C0C 00E604541046CA31
VF43L:       83C7606D8767F5E8 80F7A0EAB5361F85 C7E9F1DB641E9D09 9564E2A8FCCB01C7
VF44H:       9603290442125C11 B4D04814F6A06C3D 26381A49BC151C20 B598B1192457195B
VF44L:       F6B1F3B53F6317AC CC42C98040EE2F3D 5EE7FF97AF06CA34 E690FBADC961D99B
VF45H:       A9C9DF4304F0CD6A A0F3A7E396ABCF4E B580B33AFA543500 803E33A454900002
VF45L:       B18ABA763F4496D7 FE2166E36DF7059E 1EC2B6F58F5532F2 CD755FDC0E10CEE2
VF46H:       92A9AF50D418775C 2F85A7C319310698 11849C61B5EE2B74 51FA1B8B96B8F664
VF46L:       386EF133F094D582 C2E2E42933A362F4 0031363A23142B0B 8F07965DE8B5268B
VF47H:       D8B3BF6AF164D000 796A9D598C7E81E2 4440439485A5BC6C FA05D520AEBC7D9B
VF47L:       89FFAF11D3D53D92 1290D0126FDB97C4 9DF3E9BF77535A7D 695C9E3A230FE3D1
VF48H:       C999DBFF01A4E80B 516C2A5C5C0B29FA 8181E6D855484320 03030D57B7E244C2
VF48L:       BFB6761785B2289E 9D4CFA4DB05AF1EB 35CE3BD684D0DA10 CF146E8A51CF9D9E
VF49H:       58011D0E4611A42A 08C059425CDF96BA 81180C19EDEAF281 460A92B5E994015D
VF49L:       FA1CBF98973B2F3A 7B409D7D57580D2A AE08AD4604992A8C A15C8D509BE0617D
VF50H:       588E04F544327052 84981B1C2FF35976 0960E00205C1A250 C30B805AE9BD0E29
VF50L:       1976C8AF028A7D8D 0042A0B1EE6DE2D5 44EC7CBC84C4DD8D 47149E5953B62FD8
VF51H:       11128121E2904429 0C627BE61A8B0D10 F621001082E50783 AE177CB87DB8BF68
VF51L:       B135F117E1BA1EA0 DB147285E26B2F34 AB55245E38886CB2 CBC0A24A4FC742D9
VF52H:       509C0A4ECBB0DC24 1A0451BF57C324ED 49479E1D621CABF3 22BB2E24A4427180
VF52L:       CB3990DE2BECA2C0 00B71A6E2F4AD7FF D6A67FF7CC8C2411 1B467BD4B6E5DFE2
VF53H:       D902FC8BDE85C453 0DB2FFC205DB04B0 5082A25C009D8145 4FCFC0A12305E400
VF53L:       13748ABBE781FDB5 FC428E88F1194B35 BE45CFDF881F98F2 2A3EFDBE9F2DA326
VF54H:       A19342CB227D617C 4266F9B201060F3B B405F0F6501EAA48 7731CDBA81226426
VF54L:       3CFFF4F9AA146574 7E0EACF06FD977E6 FB00FE89EDF51EFA F453FA53158C6FB2
VF55H:       043420EC87B82C15 B30495D2723600BA CA8A2060AE518D22 40CE246840D07B4A
VF55L:       14F271EF57012691 CBFDDB096CC3B8F6 E614DA83F7E2F330 FE2CBD70576FF9D1
VF56H:       B0B582B92AA8597B 8BF517FF31E01D96 74187003BC8245B6 4291B3F31411E670
VF56L:       4F2744F71F9EF0E1 3FDD50C813EEEEFB DE1C034EE1DE1FA4 6EA2FEC4CA254DA8
VF57H:       A006E21C6801C061 A65D5FE0E14A19F3 E5B3404D022A1BA3 6003C60063242491
VF57L:       663777BB00CC3011 6AFCFFCE5DF10BD5 EBFC5B16D8FFECDF 08DCBC730A010A53
VF58H:       0D3BBB85435EE535 1BE29DAD21C0F001 B01007EC942004C8 042B05DCDC769342
VF58L:       3E55AD3EA0A73F53 ABC750300E7D9FC2 FABFAEBE9F0277B5 E1B87FCD81856972
VF59H:       B4044100A0948C4F 30971D8829B2C0AE 02A694DAB8CE910A 724A939EC5394DA6
VF59L:       E09000FE7116FE4C F3103AF40C70B8AE 7F193DECEE3F92E2 B0788C709456804E
VF60H:       1982347900C40864 6657CB59DB9A2025 E13403D5DC401080 230921509111A4F2
VF60L:       5F4437E5B53D77E7 FEAD142DFB24C411 B64A70E82212BF39 4E0EFECDD3C1D1D0
VF61H:       0069F5D151048F48 207ECC35448CCA30 20040108DAD31113 7D0561102EAE4E04
VF61L:       00F0DBCA1B82FF7C 837D2B27A99FFC5D B39536BC70FDE47E 8E87FFE310BB8013
VF62H:       7030EA20FC08A32A E27FD02FD70F7F91 04F8414242480326 7680738C39C8BF07
VF62L:       DD643C5C73D04091 0AC0A76DC4B7AC95 0773790BDF62DDA6 5BDFDF45C1AE8149
VF63H:       84DADDDB9D090983 C771EF9607653126 01D7ECF0C4D0411C 082C285F7315F212
VF63L:       024CE37ED298EFD0 86A963E38C8B0464 445E427A682E4CFB 0EFABFF65C7498A9
VDMA_AE_L:   00000000 00000000 00000000 00000000
VDMA_AE_H:   00000000 00000000 00000000 00000000
VDMA_AI_L:   00000000 00000000 00000000 00000000
VDMA_AI_H:   00000000 00000000 00000000 00000000
VDMA_OFF_E:  00000000 00000000 00000000 00000000
VDMA_OFF_I:  00000000 00000000 00000000 00000000
VDMA_ABCNT:  00000000 00000000 00000000 00000000
VDMA_RUN:    00000000 00000000 00000000 00000000
VDMA_DONE:   00000000 00000000 00000000 00000000
VDMA_INIT:   00000000 00000000 00000000 00000000
VDMA_IRQ:    00000000 00000000 00000000 00000000
VDMA_IRQM:   00000000 00000000 00000000 00000000
VDMA_IRQT:   00000000 00000000 00000000 00000000
VDMA_CFG:    90000000 90000000 90000000 90000000
VDMA_CSR:    00000000 00000000 00000000 00000000
VDMA_INIT_L: 00000000 00000000 00000000 00000000
VDMA_INIT_H: 00000000 00000000 00000000 00000000
PTW_PBA_L:   15345000  PTW_PBA_H: 90000000
PTW_CFG:     57801400  TLB_CTRL:  00000000
TLBXCPT:     NUM   ADDR     TYPE
             0     10C00000 1
             1     00000000 0
             2     00000000 0
             3     00000000 0

Чтение конкретного регистра

> regs rf 12
0xA80E15482011B9E8

Чтение нескольких регистров

Регистры перечисляются через пробел; индексы массивного регистра пишутся сразу после его имени. При выводе более одного регистра каждое значение предваряется именем регистра (с индексами в круглых скобках):

> regs pc rf 12 ertar
pc    : 0x200003C0
rf(12): 0xA80E15482011B9E8
ertar : 0x20000604

Чтение стека

> st
  #0   2011B9A8: 0x1234567800000038
  #1   2011B9B0: 0x1234567800000FFB
  #2   2011B9B8: 0x00000001000000CC
  #3   2011B9C0: 0x000000000000000C
  #4   2011B9C8: 0x0000000000000004
  #5   2011B9D0: 0x1234567890ABCDEF
  #6   2011B9D8: 0x0280000000200000
  #7   2011B9E0: 0x00000FFB000000CC
  #8   2011B9E8: 0x2011BA102000040C
  #9   2011B9F0: 0x1234567800000FFA
  #10  2011B9F8: 0x12345678000000CB
  #11  2011BA00: 0xC048F5C3C048F5C3
  #12  2011BA08: 0x00000FFA000000CB
  #13  2011BA10: 0x2011BA1820000434
  #14  2011BA18: 0x2011BA38200004A0
  #15  2011BA20: 0x1234567800000002
  #16  2011BA28: 0x2001BA982001BA98
  #17  2011BA30: 0x0000000000000002
  #18  2011BA38: 0x2011BA88200006F8
  #19  2011BA40: 0x529B701600000008
  #20  2011BA48: 0x0000000000000000
  #21  2011BA50: 0x0000000000000000
  #22  2011BA58: 0x0000000000401000
  #23  2011BA60: 0x0000000000400000
  #24  2011BA68: 0x1234567890ABCDF2
  #25  2011BA70: 0x1234567890ABCDF1
  #26  2011BA78: 0x1234567890ABCDF0
  #27  2011BA80: 0x1234567820000604
  #28  2011BA88: 0x2011BA8820000B38
  #29  2011BA90: 0x0000000000000000

Чтение стека вызовов

Пример для сборки elf с отладочными символами:

> bt
Call stack trace:
  #0  0x200003C0 funcC(DWORD address=4091, DWORD offset=204) at buildroot/outpt/build/elcorecl-extra-custom/tests/test-elcoredump-reader.c:57
  #1  0x2000040C funcB(DWORD address=4090, DWORD offset=203, FLOAT d=-3.14) at /buildroot/output/build/elcorecl-extra-custom/tests/test-elcoredump-reader.c:60
  #2  0x20000434 funcA() at buildroot/output/build/elcorecl-extra-custom/tests/test-elcoredump-reader.c:63
  #3  0x200004A0 main(<use 'kargs' command to see>) at buildroot/output/build/elcorecl-extra-custom/tests/test-elcoredump-reader.c:72
  #4  0x200006F8 _elcore_main_wrapper()
  #5  0x20000B30 _elcore_job_launcher()

Пример для сборки elf без отладочных символов:

> bt
Call stack trace:
  #0  0x20006410 _free()
  #1  0x200009A8 _elcore_main_wrapper()
  #2  0x20000DD0 _elcore_job_launcher()

Примечание

Исключения на DSP являются отложенными (конвейерными): на момент формирования аварийного дампа значение регистра PC может опережать сбойную инструкцию, поэтому имя функции и номер строки для кадра #0 могут определяться неточно (PC может указывать на соседнюю функцию). Точное место возникновения исключения в общем случае по дампу не восстанавливается. Для уточнения следует использовать команду regs ertar: регистр ERTAR содержит адрес, относительно которого произошло смещение PC, что позволяет оценить область возникновения сбоя.

Форматирование вывода стека вызовов

> opts
Output options:

hex,x          Print values as hexadecimal
raw,r          Print raw values
shortpath,s    Print only file name from source path

> setopt x
Option 'x' is set to ON

> setopt r
Option 'r' is set to ON

> setopt s
Option 's' is set to ON

> bt
Call stack trace:
  #0  0x200003C0 funcC(DWORD address=0x2000040C00000FFB, DWORD offset=0xFFB000000CC) at test-elcoredump-reader.c:57
  #1  0x2000040C funcB(DWORD address=0x2000043400000FFA, DWORD offset=0xFFA000000CB, FLOAT d=0xCBC048F5C3) at test-elcoredump-reader.c:60
  #2  0x20000434 funcA() at test-elcoredump-reader.c:63
  #3  0x200004A0 main(<use 'kargs' command to see>) at test-elcoredump-reader.c:72
  #4  0x200006F8 _elcore_main_wrapper()
  #5  0x20000B38 _elcore_job_launcher()

Чтение памяти

Вывод информации об имеющихся секциях в аварийном дампе

> read info
Available sections:
Section 1:
Section start address: 0x400000
Section end address:   0x401000
Section size:          4096
Section 2:
Section start address: 0x401000
Section end address:   0x402000
Section size:          4096
Section 3:
Section start address: 0x200000
Section end address:   0x400000
Section size:          2097152
Section 4:
Section start address: 0x20000000
Section end address:   0x2001C000
Section size:          114688
Section 5:
Section start address: 0x2011B9A8
Section end address:   0x2011BA98
Section size:          240
Section 6:
Section start address: 0x2E00000
Section end address:   0x2E80000
Section size:          524288
Section 7:
Section start address: 0x2E80000
Section end address:   0x2F00000
Section size:          524288
Section 8:
Section start address: 0x2F00000
Section end address:   0x2F10000
Section size:          65536

Вывод содержимого по адресу, принадлежащего одной из секции

> read 0x200000
          7 6 5 4 3 2 1 0
  200000: 1234567890ABCDEF

Вывод содержимого по диапазону адресов, принадлежащего одной из секции

> read 0x200000 0x200018
          7 6 5 4 3 2 1 0
  200000: 1234567890ABCDEF
  200008: 1234567890ABCDF0
  200010: 1234567890ABCDF1
  200018: 1234567890ABCDF2

Изменение ширины чтения

По умолчанию команда read выводит память 8-байтовыми словами. Ширину чтения можно изменить на 2, 4 или 8 байт — либо опцией командной строки -w, либо интерактивной командой width в процессе работы.

Адреса в команде read (как одиночный, так и диапазон) должны быть выровнены по текущей ширине; шаг по диапазону также равен этой ширине. При уменьшении ширины 8-байтовое слово распадается по нескольким адресам в порядке little-endian (младший байт по младшему адресу), поэтому, чтобы покрыть исходный диапазон, может потребоваться расширить верхнюю границу.

Указание ширины при запуске:

$ elcoredump-reader -v coredump-elcore0-... -w 4 -c 'read 200000 200018'
> read 0x200000 0x200018
          3 2 1 0
  200000: 90ABCDEF
  200004: 12345678
  200008: 90ABCDF0
  20000C: 12345678
  200010: 90ABCDF1
  200014: 12345678
  200018: 90ABCDF2

Просмотр и изменение ширины в интерактивном режиме:

> width
Current read width: 8

> width 2
Read width set to 2

> read 0x200000 0x200018
          1 0
  200000: CDEF
  200002: 90AB
  200004: 5678
  ...
  200016: 1234
  200018: CDF2