[英]about segmentation fault in LINUX
I am doing a homework developing SIC/XE assembler in LINUX. 我正在做作业,在LINUX中开发SIC / XE汇编程序。
When I made a code, I confronted some error, but I do not know why this is happen. 当我编写代码时,遇到了一些错误,但是我不知道为什么会这样。 Would you explain for me why this problem occurred? 您能为我解释为什么出现此问题吗?
The code shows below reveals 'test.asm' file with token. 下面显示的代码显示带有令牌的“ test.asm”文件。
178 printf("token1: %s \t",token1);
179 printf("token2: %s \t",token2);
180 printf("token3: %s \t",token3);
181 printf("token4: %s \t",token4);
182 printf("ss\nss");
According to this, especially "ss\\nss" statement, I expected printed out result like below. 据此,尤其是“ ss \\ nss”语句,我期望打印出如下结果。
sstoken1: LDT token2: LENGTH token3: (null) token4: (null) ss
sstoken1: WLOOP token2: TD token3: OUTPUT token4: (null) ss
ss
However, when I run this program till the end, I met segmentation fault and met weird situation. 但是,当我运行该程序直到最后时,遇到分段错误并遇到了奇怪的情况。
sstoken1: OUTPUT token2: BYTE token3: X'05' token4: (null) ss
sstoken1: END token2: FIRST token3: (null) token4: (null) ss
Segmentation fault.
There is no 'ss' before the 'Segmentation fault' statement. 在“分段故障”语句之前没有“ s”。 I can not figure why. 我不知道为什么。 Would you explain it for me please? 你能帮我解释一下吗?
I believe it's printed, by process killed by SEGV before stdout is flushed. 我相信它是按标准输出在刷新标准输出之前被SEGV杀死的进程打印的。 Try to add: 尝试添加:
fflush(stdout);
after printf statement. 在printf语句之后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.