2012-05-05 2 views
2

Я выполняю домашнюю работу по сборке ассемблера SIC/XE в LINUX.о неисправности сегментации в LINUX

Когда я сделал код, я столкнулся с некоторой ошибкой, но я не знаю, почему это происходит. Не могли бы вы объяснить мне, почему эта проблема возникла?

Приведенный ниже код показывает файл 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"); 

В соответствии с этим, в частности, заявление «ss \ nss», я ожидал распечатать результат, как показано ниже.

sstoken1: LDT token2: LENGTH token3: (null) token4: (null) ss 
    sstoken1: WLOOP   token2: TD  token3: OUTPUT token4: (null) ss 
    ss 

Однако, когда я запускаю эту программу до конца, я встретил ошибку сегментации и встретил странную ситуацию.

sstoken1: OUTPUT  token2: BYTE token3: X'05' token4: (null) ss 
sstoken1: END token2: FIRST token3: (null) token4: (null) ss 
Segmentation fault. 

Перед операцией «Ошибка сегментации» нет «ss». Я не могу понять, почему. Не могли бы вы объяснить это мне, пожалуйста?

ответ

1

Я считаю, что это напечатано, в процессе, убитом SEGV, до того, как stdout покраснел. Попытайтесь добавить:

fflush(stdout); 

после печатиf заявление.

+0

Да, вы правы, тигран! Я обнаружил, что это не сама ошибка, но это опускается. Я точно не понял, почему это происходит, но я знаю, что это не сама проблема. Благодаря! – Sogo

Смежные вопросы