Существует такая проблема, уменьшающая наглядность при отладке С кода,
скомпилированного в WinAVR - почему то курсор не хочет пошагово ходить по некоторым строкам
кода, например тогда, когда ф-ия в результате оптимизация стала инлайновой.
К тому же, эти строки еще и не отображаются в окне дизасемблера, чтобы хоть как то разобраться...
Вот, к примеру, пример:
С кодКод
if(pc_fifo.char_cnt)
{
send_sim(pop_buffer(&pc_fifo));
}
if(sim_fifo.char_cnt)
{
send_pc(pop_buffer(&sim_fifo));
}
Дизасм окноКод
140: if(pc_fifo.char_cnt)
+00000365: 91400286 LDS R20,0x0286 Load direct from data space
+00000367: 91500287 LDS R21,0x0287 Load direct from data space
+00000369: 1541 CP R20,R1 Compare
+0000036A: 0551 CPC R21,R1 Compare with carry
+0000036B: F1B1 BREQ PC+0x37 Branch if equal
+0000036C: 91200284 LDS R18,0x0284 Load direct from data space
+0000036E: 91300285 LDS R19,0x0285 Load direct from data space
+00000370: 91800282 LDS R24,0x0282 Load direct from data space
+00000372: 91900283 LDS R25,0x0283 Load direct from data space
+00000374: 1728 CP R18,R24 Compare
+00000375: 0739 CPC R19,R25 Compare with carry
+00000376: F411 BRNE PC+0x03 Branch if not equal
+00000377: E0E0 LDI R30,0x00 Load immediate
+00000378: C023 RJMP PC+0x0024 Relative jump
+00000379: 91E0027E LDS R30,0x027E Load direct from data space
+0000037B: 91F0027F LDS R31,0x027F Load direct from data space
+0000037D: 0FE2 ADD R30,R18 Add without carry
+0000037E: 1FF3 ADC R31,R19 Add with carry
+0000037F: 81E0 LDD R30,Z+0 Load indirect with displacement
+00000380: 5F2F SUBI R18,0xFF Subtract immediate
+00000381: 4F3F SBCI R19,0xFF Subtract immediate with carry
+00000382: 93300285 STS 0x0285,R19 Store direct to data space
+00000384: 93200284 STS 0x0284,R18 Store direct to data space
+00000386: 91800280 LDS R24,0x0280 Load direct from data space
+00000388: 91900281 LDS R25,0x0281 Load direct from data space
+0000038A: 1728 CP R18,R24 Compare
+0000038B: 0739 CPC R19,R25 Compare with carry
+0000038C: F421 BRNE PC+0x05 Branch if not equal
+0000038D: 92100285 STS 0x0285,R1 Store direct to data space
+0000038F: 92100284 STS 0x0284,R1 Store direct to data space
+00000391: 91800288 LDS R24,0x0288 Load direct from data space
+00000393: 7F8E ANDI R24,0xFE Logical AND with immediate
+00000394: 93800288 STS 0x0288,R24 Store direct to data space
+00000396: 5041 SUBI R20,0x01 Subtract immediate
+00000397: 4050 SBCI R21,0x00 Subtract immediate with carry
+00000398: 93500287 STS 0x0287,R21 Store direct to data space
+0000039A: 93400286 STS 0x0286,R20 Store direct to data space
+0000039C: 93E000C6 STS 0x00C6,R30 Store direct to data space
+0000039E: 918000C0 LDS R24,0x00C0 Load direct from data space
+000003A0: FF85 SBRS R24,5 Skip if bit in register set
+000003A1: CFFC RJMP PC-0x0003 Relative jump
144: if(sim_fifo.char_cnt)
А куда же делось это?
{
send_sim(pop_buffer(&pc_fifo));
}
Вопрос собственно, можно ли где то настроить, либо в Студии либо в WinAVR чтобы
пошаговая отладка работала для всех строк С кода или, на крайняк, чтобы все строки
С кода отображались в окне дизасма?
Сообщение отредактировал megaboy - Nov 7 2008, 23:16