Unity Debug Tips ตอนที่ 1 by

29
Oct
0

เคยไหมเวลาที่ตัวแปรซักตัวหนึ่ง ถูกเรา set เป็นค่าหนึ่ง แล้วมันไม่ยอมเปลี่ยน(อันที่จริงแล้ว ต้องบอกว่ามันเปลี่ยนแล้ว แต่โดน code ส่วนอื่นแก้ทับลงไปอีกรอบ) เป็นสาเหตุให้โปรแกรมของเรามันทำงานไม่เหมือนกับที่เราตั้งใจไว้

วันนี้จะมานำเสนอวิธีแก้ปัญหา ที่จะทำให้การ debug ปัญหาทำนองนี้เร็วขึ้นมากกกครับ

วิธีนี้จะแนะนำให้ใช้ get set ให้เป็นประโยชน์ครับ สมมุติว่าตัวแปรเจ้าปัญหาของเราประกาศไว้ว่าอย่างนี้

public int myVar;

ให้เราแก้เป็น

public int temp;
public int myVar{
get{
return temp;
}
set{
Debug.Log("myVer is set to "+value);
temp = value;
}
}

ทีนี้เมื่อมีการแก้ตัวแปร myVar เมื่อไหร่ มันก็จะ Debug.Log ออกมาให้เราเห็นพร้อมกับ stack trace ด้วย ทำให้เรารู้แล้วว่า code ส่วนไหนที่แก้ตัวแปรนี้ไปบ้างงงง

รวมคำสั่ง ADB (Android Debug Bridge) by

28
Feb
1

ADB (Android Debug Bridge) ก็คือเครื่องมือ comand line tools ตัวหนึ่งเอาไว้สั่งการจาก PC ไปยังมือถือที่ต้องการผ่านสาย USB (หรือ wifi ผ่านบทความนี้) สามารถเรียกใช้งานได้ผ่าน path

sdkpath/platform-tools/adb

โดย sdkpath คือ path ที่เราลง android sdk ไว้ สรุปคำสั่งที่ใช้บ่อยๆ มีดังนี้

  • adb devices – เป็นคำสั่งแรกที่ต้องใช้หลังนำมือถือเสียบ computer เป็นครั้งแรก เพื่อเช็คว่า PC เห็นมือถือเครื่องนี้หรือยัง หากปรากฏชื่ device มาก็แสดงว่าเริ่มต้นใช้งานได้ หากยังไม่ปรากฏ ต้องอนุญาตให้ PC เครื่องนี้สั่งการมือถือเครื่องนี้ได้ก่อนด้วยการ Enable Debug mode ผ่าน USB ที่ตัวเครื่องมือถือ แล้วเสียบ PC และติ๊กอนุญาตให้ PC สั่งมือถือเครื่องนี้ได้ (ป้องกันใครไม่รู้มาเอามือถือเราไปสั่ง adb ลบโปรแกรมทิ้งเล่น)
  • adb logcat -s Unity – ใช้ดู log ที่พ่นผ่าน app ที่สร้างจาก Unity ทั้งหมด
  • adb install path/to/apk – ใช้ install apk ลงเครื่อง
  • adb install -r path/to/apk – ใช้ Install apk เหมือนเมื่อกี้ แต่ต่างจากเดิมคือถ้ามี app นั้นๆ อยู่แล้วในเครื่องจะลงทับให้อัตโนมัติ ไม่ต้อง uninstall ก็ได้
  • adb install -d path/to/apk – เหมือนอันบน แต่อนุญาติให้ install apk ที่เลขเวอร์ชั่นต่ำกว่าเดิมทับ app เดิมที่อาจจะใหม่กว่าได้
  • adb uninstall com.packagename.myapp – uninstall โดยกำหนดชื่อ package ที่ต้องการ com.packagename.myapp ซึ่งบางครั้งการ uninstall ที่ตัวเครื่อง android เองจะยังไม่ลบ app ไปจริงๆ ก็ต้องใช้คำสั่งนี้ช่วย
  • adb clear com.packagename.myapp – clear ข้อมูลของ app ที่ระบุทั้งหมด (ให้ผลเหมือนการกด clear cache/clear data ผ่าน app manager ในมือถือ)
  • adb push path/in/pc path/in/android-device – ใช้ copy ไฟล์จากเครื่อง PC ลงมือถือผ่าน command line
  • adb pull path/in/android-device /path/in/pc – ใช้ copy ไฟล์จากมือถือมาลง PC ผ่าน command line
  • adb shell screenrecord /path/in/android-device/demo.mp4 – ใช้อัดหน้าจอมือถือลงเครื่องเพื่อทำ screencast ได้อย่างสะดวก (ใช้ได้เฉพาะ android 4.4 ขึ้นไปเท่านั้น)

Unity Debugging(2) by

31
Jan
0

เคยไหม เวลาที่อยากให้ Object บางตัว โผล่ออกมา หรือหายไป แต่มันดันไม่เป็นไปอย่างที่เราอยากให้เป็น บางทีมันดันมี Object ที่อยากให้หายไปตอนนี้แต่มันดันโผล่มา หรือไม่ยอมหายไป เอ้า ทีนี้จะทำยังไงล่ะ!! วันนี้เลยจะมาบอกวิธีการที่ใช้หาว่า Object ตัวนั้นๆ มันหายไป หรือโผล่มาตอนไหนบ้าง แล้วถูกสั่งให้หายไปหรือ โผล่มาโดย Code บรรทัดไหนเป็นคนสั่ง

1. ก่อนอื่นเลยให้สร้าง Script แล้วใส่ Method ตามนี้

void OnEnable(){
Debug.LogError("OnEnable");
}
void OnDisable(){
Debug.LogError("OnDisable");
}

2. Add Script ที่เราสร้างใหม่นี้ไปใส่กับ Object ที่ต้องการจะดูว่ามันหายหรือโผล่มาตอนไหน
3. คราวนี้เมื่อ Object ตัวนี้ หายไป หรือโผล่มา ก็จะมี ข้อความ OnEnable หรือ OnDisable พ่นออกมา พร้อมกับ Call Stack ด้วย ทำให้เรารู้ได้ทันทีว่า Object นี้หายไปเพราะอะไร นั่นเองงง

Unity Debugging(1) by

30
Dec
0

เคยไหมเวลามีปุ่มหลายๆปุ่ม หรือมี Collider หลายๆอัน ซ้อนกันอยู่ แล้วเมื่อคลิ๊กหรือกดปุ่ม แล้วไม่โดน Collider หรือปุ่มที่ต้องการ เอ้า ทีนี้จะทำยังไงล่ะ!! วันนี้เลยจะมาบอกวิธีการที่ใช้หาว่าเรากดไปโดน Collider ตัวไหนโดยใช้ RayCast กันครับ

1. ก่อนอื่นเลยให้สร้าง Script แล้วใส่ Method Update ตามนี้

void Update() {
if (Input.GetMouseButtonDown(0)) {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
if (hit.collider != null){
Debug.LogError(hit.collider.name);
}
}
}

2. Add Script ที่เราสร้างใหม่นี้ไปใส่กับ MainCamera ของ Scene นั้นๆ
3. เมื่อเรากดไปโดน Collider ใดๆก็ตาม Script นี้จะพ่นชื่อของ GameObject ที่เรากดไปโดนมาให้ทุกครั้ง แค่นี้เราก็รู้แล้วว่า เรากดไปโดนปุ่ม หรือ Collider ตัวไหนกันแน่ครับ

วิธี remote debugging node.js ด้วย node-inspector by

31
May
0

เคยใช้พวก Watch, Breakpoint, Step into, Step Over, Step Out ช่วยในการ debug javascript ใน Chrome ไหมครับ รู้หรือไม่ว่าเราสามารถ remote debug code node.js ไปยังเครื่อง server ที่อยู่คนละที่ได้เลย :) วิธีการมีดังนี้ครับ

  1. npm install -g node-inspector
  2. เพิ่ม debugger; ในบรรทัดที่ต้องการ set breakpoint ภายในโปรแกรม node.js ของเรา
  3. node-inspector –web-port=1338 & (เปลี่ยน 1338 เป็นเลข port ที่คุณต้องการเปิดให้ debug เข้ามาได้ หรือถ้าไม่ใส่จะ default ที่ 8080)
  4. หากโปรแกรมคุณชื่อ server.js สั่งรันดังนี้คือ node –debug node server.js (ห้ามเอา –debug ไปต่อท้าย ต้องอยู่หลัง node เท่านั้น)
  5. เข้าเว็บ http://localhost:1338/debug?port=5858 (แก้ localhost เป็นชื่อเว็บที่คุณใช้งานได้เลย)
  6. จะปรากฎดังรูป พร้อมให้คุณใช้งาน debug!
    node-inspector-google-chrome_2013-05-31_21-19-32
  7. ส่วนที่วงสีแดงไว้ในข้อ 6 คือเราสามารถเปิด browse file ใน project ของเราเพื่อมา set breakpoint เพิ่มสดๆ ด้วยการคลิกที่เลขบรรทัดทางซ้ายได้เลยทันที สะดวกต่อการใส่ breakpoint เฉพาะเวลาที่ต้องการเท่านั้น
  8. สามารถเอาเม้าส์ชี้เพื่อดูค่าตัวแปร, add to watch, step into, step over, step out ได้ครบถ้วน Yay!

ขอให้โชคดีกับ Node.js ทุกๆ ท่าน :D

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน