커널에서 개발을 하다 보면 버퍼의 내용을 출력하여 확인하고 싶을 때가 있다. 

이 때는 print_hex_dump() 를 사용하면 된다.

void print_hex_dump(const char *level,
                           const char *prefix_str,
                           int prefix_type,
                           int rowsize,
                           int groupsize,
                           const void *buf,
                           size_t len,
                           bool ascii);


예를 들어 buf 가 아래와 같다면

  buf = "123456789abcdefghijklmnop";

  print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, buf, strlen(buf), 0);

위와 같이 호출하면 아래와 같은 출력을 볼 수 있다.
 
   [70339.966181] 00000000: 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 67
   [70339.966480] 00000010: 68 69 6a 6b 6c 6d 6e 6f 70

아래와 같이 호출하면  

  buf = "123456789abcdefghijklmnop";

  print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, buf, strlen(buf), 1);

  [70468.050260] 00000000: 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 67  123456789abcdefg
  [70468.050819] 00000010: 68 69 6a 6b 6c 6d 6e 6f 70                                    hijklmnop
 

아래와 같이 호출하면
   buf = "123456789abcdefghijklmnop";

  print_hex_dump(KERN_ALERT, "김무겸바보", DUMP_PREFIX_OFFSET, 16, 1, buf, strlen(buf), 1);

  [70553.053132] 김무겸바보00000000: 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 67  123456789abcdefg
  [70553.054274] 김무겸바보00000010: 68 69 6a 6b 6c 6d 6e 6f 70                                    hijklmnop
 

유용한 API 임.
 
블로그 이미지

김유석0

,