프로그래밍 QnA

hermes의 이미지

read를 추적하는 방법을 알고싶습니다.

시스템콜을 추적해서 동작 과정을 분석하게 되었습니다.

그런데 '시스템콜 추적'이라고 검색하면 strace 프로그램을 사용하라는 글밖에 보이지 않더군요.

저는 어떤 시스템콜들이 실행되고있는가가 아니라, 한 시스템콜이 내부적으로 어떤 함수를 호출하고, 또 그 함수들은 내부적으로 어떤 함수를 호출하는지를 알고싶은데 말이죠.. ㅠㅠ (그 중에서도 read 함수를 분석하고 싶은데 말이죠..)

일단 파일을 열어서 읽고 닫는 프로그램을 작성해 본 결과, read 함수는 glibc 안에 있을 거라는 결론을 내렸습니다.
그리고 glibc 소스를 다운받아서 read를 찾고 있는데...
이게 아무리 찾아봐도 보이질 않네요.. ㅠㅠ

대체 read 함수의 정의 부분은 어디에 있는 걸까요?

시류의 이미지

텍스트모드 프로그램을 만들고 싶습니다.

그림과 같은 설정 및 설치 할수 있는 셋업 프로그램을 만들고 싶습니다..

기존에 표준 입출력으로 CLI형식으로 설정을 받던것을..

저런식으로 바꿔보려고 하는데

관련 프로그래밍 사이트나.. 예제 같은것 있으면 알려주시면 감사하겠습니다.

수고하십시오.

voidworker의 이미지

g++ 에서 undefined reference to main 이란 에러가 발생합니다.

libaaa.a : 여기에 main함수 존재
libbbb.a, libccc.a 등등의 여러 라이브러리 존재

이런 식의 구성에서 아래와 같이 링크를 시도했습니다.

g++ libaaa.a libbbb.a libccc.a ... -o aaa.out -----> 1

그랬더니 제목과 같은 에러메세지가 발생합니다. 그래서 아래와 같이 바꿨더니

g++ main.o libbbb.a libccc.a ... -o aaa.out --------> 2

이상없이 컴파일이 되네요.
리눅스 환경에서는 1과 같이 해도 잘 됩니다. 컴파일러 버전은 4.6.x였구요. 근데 윈도 환경에서 컴파일을 시도하니까 에러가 발생합니다. 버전은 4.4.x 였구요.
이걸 1과 같은 형태(main이 라이브러리 내에 포함되어 있는 형태)로 컴파일 할 수 있는 방법이 있을까요?

gurumong의 이미지

코드를 분석하는데 어떤 요령이 있을까요?

xkeymacs 라는 윈도우 프로그램을 최근 알게되어서 유용하게 사용하고있습니다
이맥스 키바인딩을 윈도우에서 사용 할 수 있게 하는것인데
오른쪽 단어를 지우는 M-d 명령어가 한단어가 아닌 두단어를 지우는 버그가 있습니다
그런데 마침 오픈소스라 직접 수정해서 쓰면 되겠다 싶어서
내려받아서 살펴보는데 역시나 내공이 부족해서 이해하기가 힘들더라구요

이미 존재하는 기능을 조금만 수정하려고 하는것인데
코드에 주석도 없고 문서화도 안되어있고 개발이 중단된지도 오래된것 같고
함수명에서 기능을 유추하기도 힘들고
그렇다고 전체 코드를 처음부터 다 분석해서 이해하는것은 조금 억울하기도 하구요

이럴떤 어떻게 해야 할까요?
특정 코드 부분만 집중적으로 분석하거나 하는데에 어떤 요령 같은게 있을까요?
어떤 그림을 그린다거나 아니면 도와주는 툴이 있다거나 아니면 방법론이나 ㅜ.ㅜ

trymp의 이미지

linux 에서 USB(NTFS) 로 다른 하드 복사시 out of memory 발생합니다.

linxu 2.6.24.7 에서 USB hot plug 로 mount(NTFS) 하고

USB(300GB) 내에 있는 40GB 사이즈의 파일 1개를 다른 하드로 복사하려고 하고 있습니다.

근데 한 20~30 분 정도 지나자 kernel oops 가 나면서 CP 하는 명령어가 자동 kill 이 되더군요.

실제로 free 메모리는 아직 남아 있는 상태입니다. 복사 전보다 많이 줄어 들었지만

그래도 많이 남아 있는 상황입니다. 근데 여러번 테스트 해봐도 계속 죽내요...ㅠㅠ

죽는 데몬은 여러가지 입니다. 아마 다른쪽에서 메모리 누수가 나고 메모리 할당 요청에

실패서 죽이나 보내요.

제 PC 의 oops 메시지 입니다.

s97083의 이미지

[질문] kernel panic - kernel panic vfs unable to mount root fs

안녕하세요

현재 kernel 파일크기가 5,121kb 정도 됩니다. 5메가 조금 넘는데
defconfig에서 새로운 kernel config 를 추가로 6개 정도 y로 넣으면

kernel panic vfs unable to mount root fs 이 나오고 있습니다.
어떤 분이 사운드 드라이버 헤더파일에 static array를 큰거 하나 잡고 부터 그렇다고 하는데

혹시 kernel 사이즈에 제한이 있거나 드라이버에 static array를 크게 잡으면 안된다거나
하는 이유가 있나요.

도움 부탁드려요.

jachin의 이미지

[완료]커널 2.6.32 버전의 parse_mtd_partitions( ) 함수를 3.3.3 버전에 맞게 다시 작성하고 싶습니다.

2.6.32 버전의 커널 소스에서 drivers/mtd/devices/m25p80.c 를 수정하여 사용했었습니다.
내부에서 m25p_probe( ) 함수에 추가적인 조건을 더 하여 특정 장치를 인식하도록 만들었는데,
커널 3.3.3 버전을 쓰려하면서, 관련 소스코드의 체계가 확 달라진 것을 느꼈습니다.

그 중에서 parse_mtd_partitions( ) 함수를 사용했었는데,
3.3.3 버전에서는 비슷하게 보이는 함수로 mtd_part_parser 를 인자로 갖는
register_mtd_parser 함수가 같은 역할을 하지 않을까 추측해보고 있습니다.

아래 코드 내용은 3.3.3 버전의 커널 소스 include/linux/mtd/partitions.h 내용 중 일부입니다.

나빌레라의 이미지

음수 0이 C언어에서 존재하는 값입니까?

아래 제가 올린 파이썬 관련해서 한번 C로 작성해 봤습니다.

#include <stdio.h>
 
int main(int argc, int **argv)
{
	float p = 1.0;
	float n = 0.05;
 
	while (1){
		p -= n;
		printf("%f\n", p);
 
		if (p == 0.0){
			printf("break by equal 0\n");
			break;
		}
		if (p < 0.0){
			printf("break by lt 0\n");
			break;
		}
	}
}

결과는...

나빌레라의 이미지

파이썬에서 소수점 계산시 0과의 비교가 제대로 안되는 문제

혼자서 아무리 고민해봐도 답이 안나와서 질문 드립니다.

def zeroTest(p, n):
	while True:
		p -= n
		print p
		if p == 0:
			break
		if p < 0 :
			break

코드는 아주 단순합니다.

이 코드를 실행해보겠습니다.

파이썬 버전은 2.7.2입니다. 그런데 2.6.x에서도 비슷하게 이상한 결과가 나오더라구요.

ghostyak의 이미지

[완료] Ethernet 에서 Half / Full Duplex 를 구별할 수 있는 방법이 뭔가요?

네트워크 뉴비입니다.

PC와 임베디드 장비가 있습니다.

임베디드 장비의 상태가 좀 이상한 것 같습니다.

페이지

프로그래밍 QnA 구독하기