분류 전체보기 (64) 썸네일형 리스트형 unity 2d pivot private Vector2 Getpivot(Texture2D tex, int x, int y, int width, int height){ Color[] pixels = tex.GetPixels( (int)x, (int)y, (int)width, (int)height ); // 스프라이트의 첫 번째 비투명 픽셀 찾기 (아래부터 위로) int firstNonTransparentY = -1; for (int row = 0; row 0) // 알파 값이 0보다 큰 경우 { firstNonTransparentY = row; break; } .. unity 2d 캐릭터 sortingorder 실시간 조정 y값 기준으로 아래있는건 더 앞에 그리기 using UnityEngine;using System.Collections.Generic;public class SortingOrderManager : MonoBehaviour{ public static SortingOrderManager Instance; private List characterRenderers = new List(); public float yOffsetMultiplier = 100; void Awake() { if (Instance == null) { Instance = this; } else { Destroy(g.. unity script로 texture2d Sprite의 pivot 한번에 바꾸기 using UnityEngine;using UnityEditor;public class BatchSetPivot : EditorWindow{ [MenuItem("Tools/Batch Set Sprite Pivot to Center Bottom")] public static void ShowWindow() { GetWindow("Batch Pivot Setter"); } private void OnGUI() { GUILayout.Label("Set Pivot for Multiple Sprites", EditorStyles.boldLabel); if (GUILayout.Button("Set Pivot to Center Bottom")) .. hiredis redisAsyncCommandasync로 redis명령어 실행 redisvAsyncCommand명령어 분석 및 유효하게 수정__redisAsyncCommand명령어에 맞춰서 분기 __redisAppendCommand명령어 라인에 추가sdscatlen새로운 버퍼 만들기sdsMakeRoomFor사용 가능 공간 및 비교해서 실제로 만듦 hiredis.credisBufferWrite net.credisNetWrite socket.h(os)send c->obuf)를 send해서 성공하면 sdsfree(c->obuf);c->obuf = sdsempty(); jvm 살짝 보기 jvm에는 스레드별로 PC register, Stack ,Native Method Stack이 있고공용 메모리로는 Heap, Method Area가 있다. 공용 메모리는 이해가 됐다 heap이랑 소스코드 method area가 있겠지스레드별로 stack이 있는건 이해되는데 왜 따로 native method stack이라는게 있는지 어떻게 있는지 애매했다.gdb로 봐봤다. java -Djava.library.path=. MyLibrary 라이브러리 위치 정해주고 실행 418800000-457000000 rw-p 00000000 00:00 0 457000000-7ff800000 ---p 00000000 00:00 0 7ff800000-7ff908000 rw-p 00ced000 103:0a 1718517.. jvm 살짝 보기 jvm에는 스레드별로 PC register, Stack ,Native Method Stack이 있고공용 메모리로는 Heap, Method Area가 있다. 공용 메모리는 이해가 됐다 heap이랑 소스코드 method area가 있겠지스레드별로 stack이 있는건 이해되는데 왜 따로 native method stack이라는게 있는지 어떻게 있는지 애매했다.gdb로 봐봤다. java -Djava.library.path=. MyLibrary 라이브러리 위치 정해주고 실행 418800000-457000000 rw-p 00000000 00:00 0 457000000-7ff800000 ---p 00000000 00:00 0 7ff800000-7ff908000 rw-p 00ced000 103:0a 1718517.. core dump, Gdb 코어덤프힙 스택 레지스터 등을 파일로 저장 코어덤프 필요성충돌나면 그떄의 상태를 보관해두고 분석 가능 ulimit -c unlimited크기제한 없애고 충돌시 코어덤프 생성echo "/tmp/core_%e.%p" | sudo tee /proc/sys/kernel/core_pattern%e 실행 파일 이름%p 프로세스 ID/tmp/core_파일이름.프로세스id 로 코어덤프 저장됨/proc /sys/kernel/core_pattern수정 코어덤프 위치랑 이름 바꾸기 위해Kill이나 충돌일으키면 덤프떠짐Gcore로 덤프뜨기도 가능gcore -o /tmp/core_dump 코어덤프 gdb로 실행gdb /path/to/executable /path/to/core_dump 자바 살짝 분석 gdb로 자바 실행법gdb --args java -Djava.library.path=. 파일이름 public class HelloWorld { public static void main(String[] args) { while(true){ try { Thread.sleep(1000); // 1000ms = 1초 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Hello, World!"); }}} (gdb) info thread Id Target Id .. 이전 1 2 3 4 ··· 8 다음