[語法] DEBUG與ASSERT

看板C_and_CPP (C/C++)作者 (GT500)時間15年前 (2010/10/10 14:25), 編輯推噓4(4015)
留言19則, 7人參與, 最新討論串1/1
如題...小弟最近在看nachos的程式碼,遇到一些瓶頸 舉下面這個例子 void Thread::Sleep (bool finishing) { Thread *nextThread; ASSERT(this == kernel->currentThread); ASSERT(kernel->interrupt->getLevel() == IntOff); DEBUG(dbgThread, "Sleeping thread: " << name); status = BLOCKED; while ((nextThread = kernel->scheduler->FindNextToRun()) == NULL) kernel->interrupt->Idle(); ASSERT的意思爬文後知道是Debug用,括弧內的條件不成立就直接爆 可是DEBUG就搞不清了 請問DEBUG是要配合ASSERT使用嗎? 上面那段DEBUG的意思又是什麼? 以上 P.S.小弟的程式底子比較差..麻煩各位板大幫忙解釋一下 謝謝 -- 活得精彩 http://www.wretch.cc/blog/ford2006must -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.232.14

10/10 14:27, , 1F
就單純印出debug訊息吧
10/10 14:27, 1F

10/10 14:30, , 2F
0.0 所以說那行的意思跟cout<<一樣囉?
10/10 14:30, 2F

10/10 14:34, , 3F
我想那個DEBUG是該程式碼自己定義的 做了什麼就要看看
10/10 14:34, 3F

10/10 14:36, , 4F
我同樓上,覺得那DEBUG應該是一個macro
10/10 14:36, 4F

10/10 15:08, , 5F
老師有教~ 那是編譯的時候可以加的參數~
10/10 15:08, 5F

10/10 15:20, , 6F
可以請pichubaby大在稍微解釋一下嗎^^
10/10 15:20, 6F

10/10 15:23, , 7F
我想老師教的是 -DDEBUG 這種 跟原po的應該不太一樣
10/10 15:23, 7F

10/10 16:06, , 8F
所以說DEBUG只是一個巨集囉?!
10/10 16:06, 8F

10/10 16:13, , 9F
我猜某地方有寫 #define DEBUG(x,y) ....
10/10 16:13, 9F

10/10 16:18, , 10F
你應該找個 IDE,開啟該專案,在 DEBUG 的地方用 IDE 移到
10/10 16:18, 10F

10/10 16:18, , 11F
符號定義的功能去看。
10/10 16:18, 11F

10/10 16:19, , 12F
簡單來說,如果在 foo(x,y) 出現地方,用此功能就會跳到
10/10 16:19, 12F

10/10 16:19, , 13F
foo 函數定義的地方
10/10 16:19, 13F

10/10 16:28, , 14F
了解 非常謝謝各位
10/10 16:28, 14F

10/10 18:01, , 15F
這邊 ASSERT 用來檢查進此 method 要滿足的 pre-condition
10/10 18:01, 15F

10/10 18:02, , 16F
debug 大概就是印印東西吧, 這是我的理解
10/10 18:02, 16F

10/10 18:03, , 17F
Assert 寫在後面自然就是檢查 post-condition.
10/10 18:03, 17F

10/10 18:04, , 18F
但加了這些,不代表程式一定沒有 bug XDrz
10/10 18:04, 18F

10/10 23:27, , 19F
謝謝good大 ^^
10/10 23:27, 19F
文章代碼(AID): #1CiLnD_O (C_and_CPP)
文章代碼(AID): #1CiLnD_O (C_and_CPP)