作者zzss2003 (brotherD)
看板C_and_CPP
标题[问题] 为什麽会出现segament fault?程式问题?
时间Wed Sep 26 19:35:47 2018
程式码:
https://ideone.com/kP8qHo
结果:
https://imgur.com/a/WMdUccR
与结果不符之预期: 程式不应该停止,因为我用while(1)回圈整个包住了,而且并没有
printf出"should not be here"。 然後我用debug mode一行一行跑的时候,发现count=2
(也就是第二次进入isr)且执行到第87行的时候(也就是在60行,把LEDS丢进去function
print_byte),出现segment fault。
这就是为什麽程式会在这边停止的原因吧! 但从C语言来看这一行本身没什麽问题,我又看
不太懂x86的组语...Orz,所以来这边请教一下各位大大。
(ps: 原本想给各位大大看组语,但不晓得为什麽我的dev c++开启视窗後就不能动了,导
致没办法把整个片段给大家看。)
截图:
https://imgur.com/a/0ZoYrgi
我是不是直接换个环境比较快阿???
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.42.52.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1537961751.A.913.html
1F:→ james732: 你的i没有初始值会出事 09/26 19:46
2F:推 Schottky: printf 写错了,%d 要对应 int 你却给 unsigned char 09/26 19:47
3F:→ Schottky: 後面会 Segmentation fault 也不意外 09/26 19:47
4F:推 Schottky: 对喔,i 也没给初值就使用 09/26 19:49
5F:推 cphe: 你的i每次进来都是garbage,你应该是想设成static吧 另外 09/26 20:03
6F:→ cphe: 如果要练习写timer interrupt不该用这种模拟方式,你怎麽跑 09/26 20:03
7F:→ cphe: 都只是user process~直接写一只driver不就好了 09/26 20:03
感恩,是i没给到初始值,导致取到array以外的值了~
回c大,目前手边没开发板,只能用这样子模拟QQ
※ 编辑: zzss2003 (114.42.52.32), 09/26/2018 20:23:55
8F:→ MOONRAKER: 你继续用看的看C语言就好,用看的,不要写code。 09/26 22:49
9F:推 Schottky: 置底十三诫之第一诫。那十三诫值得一看 09/27 13:42
10F:推 segment: 因为你打错字 09/28 19:40
11F:→ Killercat: er..是时候该抛弃dev c++跟学学debugger了 09/28 20:19
12F:→ sunneo: vscode 比较棒 09/28 23:00
13F:推 dces4212: eclipse好像有开发版模拟plugin 10/02 12:05