Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Vitek 31. 08. 2015, 09:23:22
-
Ahoj,
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.
Takze me napadlo nekolik moznosti, jak se s tim problemem vyrovnat.
1) Linker nabizi volbu -Wl,-wrap,XXXX viz: http://stackoverflow.com/questions/3662856/how-to-reimplement-or-wrap-a-syscall-function-in-linux (http://stackoverflow.com/questions/3662856/how-to-reimplement-or-wrap-a-syscall-function-in-linux) pro volani konkretni funkce. --> Generovat wrap funkce pro kazdou funkci z puvodniho zdrojaku asi neni dobre.
2) Dalsi moznosti je -finstrument-functions viz: http://mcuoneclipse.com/2015/04/04/poor-mans-trace-free-of-charge-function-entryexit-trace-with-gnu-tools/ (http://mcuoneclipse.com/2015/04/04/poor-mans-trace-free-of-charge-function-entryexit-trace-with-gnu-tools/), to uz je lepsi, ale je to omezene pouze na volani celych funkci, ne na jednotlive radky.
3) Jeste jsem nasel profilovani -fprofile-generate, , ale nevim, jak vykonavat vlastni kod misto toho profilovaciho.
Nevite jestli je mozno provest instrumentaci vykonavanych radku, tj pred kazdy C/C++ radke vlozit volani moji funkce?
Diky za Rady Vitek
-
Sériák a printf()? Pokud zrovna nelovíš chybu kompilátoru, tak mi to přijde jako dostatečně powerfulní nástroj pro řešení bug v kódu < 32k instrukcemi.
-
Sériák a printf() je dobrej, ale chtel jsem zjistit, jestli neni neco lepsiho.
Rozhodne diky za nazor.
-
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.
Krokovat ve významu krokovat nelze. Logovací printf jde ručně přidat, ale tím se kód velmi změní. Podpora v C/C++ na logování jednotlivých řádků zřejmě není. Na AVR se používá logovací zápis do registru UDR, je to pouze jedna instrukce takže to okolní kód moc neovlivní.
-
Ahoj,
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.
Co to je přesně "Poor man"? Dragon stojí cca 1.400,-. To je jak sen. Za mých mladých let byl emulátor za 50+ kolíků...