kernel linux + gdb + mmap + /dev/mem problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am trying to debug a simple application running on GNU-Linux kernel 2.6.8.1
(see attachment).

This application works in a memory region not visible for linux (parameter
mem=XXX at boot time).

I map this region using mmap on /dev/mem device as root user.

When I debug it, accessing pointer to this region, the system freezes. So reboot
is necessary and no debug is possible.

The application work correcty but the only solution for debug it is running a
concurrent application that writes the content of this memory region using printf.

Does anybody know an easier and more confortable solution.

P.S.: I already posted this email to the gdb mailinglist, they told me this is
linux kernel problem.

Thanks a lot.



____________________________________________________________
Navighi a 4 MEGA e i primi 3 mesi sono GRATIS. 
Scegli Libero Adsl Flat senza limiti su http://www.libero.it
#include<stdio.h>
#include <sys/mman.h>
#include <syscall.h>
#include <errno.h>

int main()
{
	int fd,i;
	unsigned char * mem1, *mem2;
	const int size = 2 * 1024 * 1024;
	unsigned long addrphys = 254 * 1024 * 1024;
	
	mlockall(MCL_CURRENT| MCL_FUTURE);
	
	if ((fd = open("/dev/mem", 02) ) < 0) 
	{
		printf("can't open /dev/mem \n");
		exit (-1);
	}
	
	mem1 = (unsigned char *) mmap((void *)0,size ,PROT_READ | PROT_WRITE,MAP_SHARED , fd, addrphys);
	if (mem1)
		memset(mem1,0, size-1);
	printf("%d",(int) mem1);
	 if (mem1)
	{
		for (i=0; i < (size-1); i++)
		{
			printf("%x ", *(mem1 +i));
		}
		printf("\n\r");
	}
	
	munmap((void *)mem1,size );
	close(fd);
}

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux