프로그래밍 104

[GDB] shared library debug symbol loading

https://stackoverflow.com/questions/30281766/need-to-load-debugging-symbols-for-shared-library-in-gdb/66562021#66562021 Need to load debugging symbols for shared library in GDB I am using GDB to debug a program that uses libpthread. There is an error happening in pthread_create and need to step into that function. Unfortunately when I am debugging my program, it does not... stackoverflow.com 요약 ..

[cygwin] sshd no password login (linux to windows)

개요 window에 cygwin을 설치 후 linux에서 window로 ssh 를 통하여 접속시 공개키를 이용하여 접속하는 방법 cygwin 설치 https://www.cygwin.com/install.html cygwin sshd 설정 1. PubkeyAuthentication 사용 설정 yes로 설정 PubkeyAuthentication yes 2. dns 사용하지 않는 환경에서 접속 빠르게 하기 UseDNS no Troubleshooting 로그인시 passwor을 계속 물어볼 경우 StrictModes가 yes로 설정된 경우, SSHD는 사용자의 홈 디렉터리와 SSH 관련 파일들의 권한이 엄격하게 설정되어 있는지 확인합니다. 이를 위한 파일 권한 설정은 다음과 같습니다: 사용자의 홈 디렉터리 (~..

[Debugging] Linux application debugging

개요 linux에서 C++로 개발된 application을 실행 할 때 Debugging하는 방법을 알아보겠습니다. 목차 ... 실행 전 연결된 library 확인 리눅스에서 현재 실행 전 프로세스에 로딩될 라이브러리를 확인하기 위해 여러 가지 방법을 사용할 수 있습니다. 다음은 그 중 몇 가지 방법입니다: ldd ldd 명령어는 실행 파일에 대한 종속 라이브러리를 출력합니다. 실행 중인 프로세스의 실행 파일을 찾아서 `ldd`를 사용하여 어떤 라이브러리가 연결되었는지 확인할 수 있습니다. ldd /path/to/executable 이 방법은 실행 파일에 대한 경로를 알고 있어야 하며, 현재 로딩된 라이브러리와 실행 시 로딩될 라이브러리 사이에 차이가 있을 수 있음에 유의해야 합니다. nm nm 명령어는..

[linux] netfilter 소개 및 동작 방식

개요 linux의 netfilter가 무엇인지 알아보겠습니다. netfilter란? Netfilter는 리눅스 커널에서 네트워크 패킷을 처리하는 프레임워크입니다 전체 구성도 https://en.wikipedia.org/wiki/Netfilter 에 잘나와 있습니다. netfilter의 동작 구조 5개의 chain과 5개의 table을 사용하여 packet을 제어 합니다. 좀더 풀어서 설명하면 각 chain에 여러개의 tabledmf 순차적으로 적용하여 packet을 제어 하는 것입니다. chain 사용자에게 Hook을 걸수있는 point를 제공하니다. 각 chain에 대한 설명 종류 설명 PREROUTING 이 chain은 패킷이 커널을 통과하기 전, 즉 데이터링크 계층과 네트워크 계층 사이에서 작동합니..

[Hook ] LD_PRELOAD

개요 LD_PRELOAD가 무엇인지 알아보겠습니다 용도 "Hooking" 용도로 사용됩니다. LD_PRELOAD는 Linux 및 Unix 계열 시스템에서 사용되는 환경 변수로서, 프로그램이 실행되기 전에 특정 동적 라이브러리를 먼저 로드하도록 지시합니다. 이를 통해, LD_PRELOAD에 명시된 라이브러리의 함수가 다른 동일한 이름의 함수보다 먼저 호출됩니다. 사용법 1. overrride할 함수를 포함하는 shared library를 생성 이 library에는 hooking할려는 함수와 동일함 이름및 paramter를 가져야 합니다. 2. shared library compile 공유 라이브러리를 컴파일하고 .so 파일을 생성합니다. 3. LD_PRELOAD를 사용하여 실행 환경 변수 LD_PRELOA..

[stress] stress 사용법

개요 linux에서 부하 테스트를 하기위해서 대부분 stress라는 tool은 사용합니다. 이에 대하여 어떻게 사용하는지 알아보겠습니다. stress 옵션 Usage: stress [OPTION [ARG]] ... -?, --help show this help statement --version show version statement -v, --verbose be verbose -q, --quiet be quiet -n, --dry-run show what would have been done -t, --timeout N timeout after N seconds --backoff N wait factor of N microseconds before work starts -c, --cpu N spawn..

[swagger] swagger UI cors 해결

개요 beego + swagger를 사용하려고 할때 swagger 실행 서버랑 web brower 실행 ip가 다를때 cors오류가 발생 하는데 이를 해결하는 방법을 남깁니다. 현상 Fetch error Failed to fetch https://petstore.swagger.io/v2/swagger.json Fetch error Possible cross-origin (CORS) issue? The URL origin (https://petstore.swagger.io) does not match the page (http://1.1.1.1). Check the server returns the correct 'Access-Control-Allow-*' headers. 해결법 swagger 디렉토리 하..

[코지] const 위치별 사용법

const 위치별 사용법 const의 기능은 상수화 하는 것입니다. 1. 일반 변수 일반 변수선언 시 const는 아래와 같이 2군데 위치에 올 수 있다. 이 경우 const의 위치에 따른 var에 대한 제약은 동일하 효과를 얻는다. 코딩할 때는 1번을 사용하자 1) const int var; 2) int const var; 2. pointer 변수 pointer 변수를 선언할 경우 아래와 같이 3군데에 const가 위치할 수 있다. 그런데 이렇게 되면 const의 상수화 범위가 너무 헷갈리수 있습니다. 그러나 const 원리만 알면 아래의 3가지는 쉽게 구분이 가능합니다. 원리는 const는 바로 뒤에 위치한 것만 상수화 합니다. 상수화 하는 부분은 보라색으로 표기하겠습니다. 1) const int* ..

[코지] c++ 소수점 표현

개요 c++에서 소수점 아래 표현하는 방법을 알아보겠습니다. 목차 1. 자료형 범위 2. 소수점을 표현할 수 있는 자료형 3. 수의 표현 방법 자료형 범위 구분 자료형 byte 범위 비고 기본형 void – – 문자형 (signed) char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 wchar_t 2 byte 0 ~ 65,535 정수형 bool 1 byte 0 ~ 1 (signed) short (int) 2 byte -32,768 ~ 32,767 unsigned short (int) 4 byte 0 ~ 65,535 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 OS bit 따라다름 unsigned int 4 byte ..