Анализ аварийных дампов
В случае, если установлена переменная окружения 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