[C] nm, readelf, objdump, size

링킹 관련 object file을 다루는 binutils 몇가지를 설명하고 command 예제를 보인다.

nm: object 파일 내의 symbol 을 나열한다.

nm dasomoli.o

readelf: symbol table을 보인다.

readelf -s dasomoli.o
readelf -hSl dasomoli.o

몇가지 옵션은 다음과 같다.

  -h --file-header       Display the ELF file header
  -l --program-headers   Display the program headers
     --segments          An alias for --program-headers
  -S --section-headers   Display the sections' header
     --sections          An alias for --section-headers
  -s --syms              Display the symbol table
     --symbols           An alias for --syms
     --dyn-syms          Display the dynamic symbol table
     --lto-syms          Display LTO symbol tables
     --sym-base=[0|8|10|16]
                         Force base for symbol sizes.  The options are
                         mixed (the default), octal, decimal, hexadecimal.

objdump: object file 내의 machine level 명령 및 그 disassembly를 보인다. macOS에서는 gobjdump를 사용한다.

objdump -d dasomoli.o

다음과 같이 -s -j 옵션으로 section 내용 확인이 가능하다. -s 는 선택된 section의 모든 내용을 보여 준다. -j <section> 은 section의 내용을 모두 표시한다.

objdump -s -j .data dasomoli.out

-S 옵션으로는 source disassembly 내용을 표시한다.

objdump -S dasomoli.out

size: static memory layout에 해당하는 세그먼트를 살펴볼 수 있다. POSIX utility program이다. macOS에도 있다.

size dasomoli.out
size -m dasomoli.out

[Linux] mysql 복구 script

mysql이 자꾸 죽으면서 워드프레스가 DB연결을 못하고 자꾸 에러를 띄운다.

InnoDB memory pool size가 기본으로 128M로 되어 있는데, 이걸 할당을 못하고 죽는 것 같다.

64M로 줄이자.

# vi /etc/mysql/conf.d/innodb.cnf
[mysqld]
innodb_buffer_pool_size = 64M

 

죽으면 사실 그냥 service mysql restart 해주면 되는데, 요거도 귀찮으니까 돌려서 죽으면 실행하게 스크립트를 만들자

# vi mysqlmon.sh
#!/bin/bash

linecount=`ps -aux | grep /usr/sbin/mysqld | wc -l`

if [ "$linecount" = "2" ]; then
        echo "`date`: Working well" >> /var/log/mysqlmon/mysqlmon.log;
else
        echo "`date`: Trying to recover..." >> /var/log/mysqlmon/mysqlmon.err;
        service mysql restart;
        echo "`date`: Done" >> //var/log/mysqlmon/mysqlmon.err;
fi

 

crontab에 등록하자

# crontab -e
*/5 * * * * /root/mysqlmon.sh

 

log파일을 관리하도록 [Linux] logrotate 설정 글의 예제처럼 logrotate를 설정하자.

Logitech MX master 2s VS G1

MX master 2s는 뒤가 높아, 검지 바로 아래를 마우스 위쪽 굴곡의 바로 뒤에 대는 나의 경우, 손가락이 짧아서 휠에 검지가 겨우 닿게 굴리는 느낌이다. 잡는 방법을 다르게 해야 쓰기 좋을 듯.
언뜻 봐선 모르는데 마우스 왼쪽 두개 버튼 외에도 왼쪽 엄지를 받치는 부분도 버튼(제스처 버튼)이 있어 아래로 눌러 쓸 수 있다.

Logitech G1과 G403 wireless 마우스 크기 비교

딜레이 없는 괜찮은 무선 마우스가 하나 갖고 싶다고 생각하던 중에 Black Friday를 맞아 로지텍 G403과 G900을 싸게 팔길래 고민고민하던 중에 원래 쓰던 G1과 크기 비교를 하고 싶은데, 찾아봐도 없길래 내가 올린다. 결국 내가 산 건 G403.

G1에 비해 좀 크고, 묵직하다.  손이 작은 나도 G1을 잡으면 마우스 등이 손바닥 안쪽의 상단까지만 닿는데, G403은 조금 더 깊이 닿고, 마우스 등이 손바닥 안쪽의 상단 3/4이 닿는다. 모양이 달라서 쥐는 방법이 좀 달라진다.

G1과 G403의 크기 비교

G1과 G403의 크기 비교

G1과 G403의 크기 비교

G1과 G403의 크기 비교