Autor Tópico: falha de segmentação [resolvido]  (Lida 12436 vezes)

Offline woises

  • Usuário Ubuntu
  • *
  • Mensagens: 10
    • Ver perfil
falha de segmentação [resolvido]
« Online: 27 de Dezembro de 2007, 22:16 »
Pessoal,

estou fazendo um programinha em c++ que acessa a porta paralela, o programa compila normal com  "sudo g++ -v -oacessoLPT acessoLPT.cpp", o problema é que quando eu vou executa-lo aparece a seguinte mensagem de erro "falha de segmentação(core dumped)", procurei no google e não achei nada satisfatorio(sempre dizem que he um erro generico).

segue o programa:

#include <sys/io.h>
#include <iostream.h>
#include <unistd.h>

//using namespace std;
int main(){
   
   if(ioperm(0x378,0,1)){
      //unsigned char valor = 11111111;
      outb(255, 0x378);
}


Alguem tem alguma sugestão??/
« Última modificação: 02 de Janeiro de 2008, 22:11 por woises »
Se você almeja a paz, então prepare-se para a guerra!

Darcamo

  • Visitante
Re: falha de segmentação
« Resposta #1 Online: 28 de Dezembro de 2007, 20:56 »
Acontece que falha de segmentação realmente é um erro genérico. Pode ser muita coisa.

Em geral, isso ocorre quando você acessa uma região de memória que não deve. O exemplo mais básico é tentar acessar um elemento fora to tamanho de um vetor.

O jeito para descobrir a causa de uma falha de segmentação é rodar o programa do debug. Quando o programa der o erro e sair, você poderá saber que linha causou a falha de segmentação. No caso do seu programa foi a linha
Código: [Selecionar]
outb(255, 0x378);
Não sei muito sobre como usar a porta paralela, e como usar a função outb. Talvez a sua porta paralela não seja 0x378 ou você não possa enviar nada para ela (ao menos não com a função outb).

Procura mais informações sobre essa função outb e se tem que fazer alguma coisa para usá-la (liberar alguma permissão para que seu usuário possa acessar diretamente a porta paralela, se tem que fazer algum tipo de inicialização, etc). Ou então procura alguma biblioteca para trabalhar com a porta paralela de maneira mais fácil.


Outra coisa, <iostream.h> é deprecated. Use apenas <iostream> no lugar.

Offline woises

  • Usuário Ubuntu
  • *
  • Mensagens: 10
    • Ver perfil
Re: falha de segmentação
« Resposta #2 Online: 02 de Janeiro de 2008, 22:10 »
Resolvido....
vlw Darcamo..

Na verdade o erro não estava na função outb() e sim na ioperm() pois ela é que fornece a permissão para acesso a porta e eu descobri (só não entendi o pq) que ela não estava dando, então eu simplesmente retirei ela.
Muito estranho pq esse mesmo erro esta dando no mp3blaster, será alguma inconsistência da nova versão do ubuntu???
Se você almeja a paz, então prepare-se para a guerra!