IT/DevOps
-
Dotnet 환경에서 unmanaged 코드에 접근하는 방법IT/DevOps 2011. 1. 26.
1. COM Interop Dotnet CLR이 COM Interop을 위해 최적화된 마샬러(marshaler)를 제공 ※ 먀샬링 : 클라이언트가 요청한 데이터를 서버가 인터페이스에 맞도록 데이터를 조직화 하고 변환하는 것. ex) 스택 동일 어플리케이션에서 객체의 메서드를 호출할 떄 매개변수나 결과값은 스택을 통해 전달하는데, 동일한 어플리케이션이 아닐 경우 서로 다른 스택을 사용하기 때문에 전달할수 없다. 이러한 경우에 메서드를 호출하기 위해 매개변수와 결과값은 바이트 스트림(메모리버퍼)에 기록하고 전달하는 방법으로 해결할 수 있는데 바이트 스트림으로 변환하는 과정을 마샬링이라 한다. 2. PInvoke(Platform Invoke) DLL이 외부에 노출하는 export 함수를 직접 호출하는 방법 ※..
-
Debug, addr2lineIT/DevOps 2011. 1. 20.
addr2line 은 프로그램의 심벌 주소값들을 파일 이름과 라인 번호로 변환한다. 테스트 코드 : test.c #include void callback_func(){ printf("callback func\n"); } int main() { printf("Hello World\n"); callback_func(); return 0; } make symbol ~ $ gcc -Wl,-Map=test.map -g -o test test.c ~ $ grep callback test.map 0x0000000000400508 callback_func 라인 확인 ~ $ addr2line -i 0x0000000000400508 -e test ~/test.c:4 프로그램이 실행 중, 런타임 오류가 발생한 경우 symb..
-
Windows SysinternalsIT/DevOps 2011. 1. 19.
제목과 같이 sysinternals 사이트를 이용하면, 윈도우 개발자를 위해서 시스템 유틸리티를 제공한다. http://technet.microsoft.com/ko-kr/sysinternals 아래 4가지는 꼭 설치해서 활용해보시길 Process Explorer 실행중인 프로그램의 실행 디렉토리 위치, CPU와 메모리 사용률, 쓰레드, Load된 DLL과 Handle등의 정보를 알수 있다. 프로세스가 필요한 라이브러리를 로드를 못하거나 메모리, 쓰레드 누수등의 정보를 확인, 프로세스 덤프까지 활용할 수 있어 디버깅에 매우 유용 Process Monitor 프로세스를 모니터링하는 툴로써, 실시간으로 프로세스의 실행 명령 및 레지스트리 사용정보와 결과에 대한 정보를 알수 있다. 프로세스가 어떤 명령을 내리고..
-
Alias 설정IT/DevOps 2011. 1. 17.
습관대로 .bashrc에 alias설정을 할려고 vi ~/.bashrc로 파일을 열어보니 다음과 같은 내용을 찾게 되었다. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi alias에 대한 추가적인 정의는 bash_aliases 파일에서 하라고 나와 있다. .bash_aliases을 파일을 만들고 자주 사용하는 cp, mv, rm 에 대해서 -i 옵션 alias를 주었습니다. vi ~/.bash_aliases alias rm='rm -i' alias mv='mv -i' alias cp='cp -i' 개인적으로 이렇게 설정 내용을 분리하는 것은 관리하기 좋은 방법이라고 생각한다.
-
Ubuntu 서버 ssh 접속IT/DevOps 2010. 9. 19.
[원격접속 환경 구성] sshd ( 원격 접속 데몬 ) 설치와 실행 morenice@ubuntu:~$ sudo apt-get install ssh morenice@ubuntu:~$ sudo /etc/init.d/ssh start * Starting OpenBSD Secure Shell server sshd [ OK ] 시작프로그램 등록 /etc/rc.local에 등록하여 부팅 때 마다 ssh 서버를 실행되도록 설정. morenice@ubuntu:/etc$ sudo vi /etc/rc.local #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the scrip..