---
# System prepended metadata

title: Debug 基本常用方式
tags: [Grails, chrome, web]

---

#  Debug 基本常用方式
###### tags: `Grails` `web` `chrome`

# F12
在Chrome選單中選擇 更多工具 > 開發者工具
在頁面元素上右鍵點擊，選擇 “檢查”
使用 快捷鍵 Ctrl+Shift+I (Windows) 或 Cmd+Opt+I (Mac)

![](https://i.imgur.com/uVxTxxD.png)

# 基本 console 使用
```javascript=
/**
 * 視覺化呈現-前端追code使用
**/
console.warn('<output>')
console.error('<output>')
console.info('<output>')
console.log('<output>')


//清除console
clear()
```
![](https://i.imgur.com/IqXp7wb.png)

# console 特殊功能

```javascript=
// 計數-前端追code判別用
console.count([String])

//計時-前端效能校正用
console.time([String])  // 開始計時
console.timeEnd([String])  // 結束計時
```
![](https://i.imgur.com/XZNw8uI.png)

# console 特殊功能

```javascript=
//檢視這個 DOM 元素中的所有屬性
console.dir([DOMElement])dir([DOMElement])
$("#id") 點箭頭
```
![](https://i.imgur.com/9C7fvmp.png)

# console 複合使用

```javascript=
function calFunc(){
    console.log('start calFunc');
    console.time('timer1');
    var a=2;
    
    //do something
    for(var j=1; j<10; j++){
        a=a*j;
        console.log(a);
    }

    console.timeEnd('timer1');
    console.log('end calFunc');
}
```
![](https://i.imgur.com/67M6TlQ.png)

# network
Status：HTTP狀態碼
Type：請求資源的MIME型別
Initiator：標記請求是由某一對象發起
Size：請求的資源大小
*Time：總持續時間，從發起請求到資源下載完成-觀察最耗時封包, 可能錯誤或效能校正用
Waterfall：每一個請求活動不同階段的可視化瀑布流
![](https://i.imgur.com/Aq7f3b4.png)

# Network-Header
Headers:
Request URL:請求網址
Request Mthod:請求方法
Status Code:狀態碼
200：表示成功。
304：表示瀏覽器已經有一模一樣的檔案。
400：瀏覽器發出的請求被網頁伺服器拒收，通常是發出的請求格式不正確。
403 ：無查詢權限
404：找不到網頁。
500：網頁伺服器掛了。
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Status  詳細對照表
Form Data: 送至伺服器端資料

![](https://i.imgur.com/CHEP4pY.png)

# Network-Header
Preview：回傳資料以瀏覽器能解析的方式呈現
Response：回傳資料以純文字呈現
Cookies：每次請求都會發送瀏覽器的cookie

![](https://i.imgur.com/RfUT0R2.png)
![](https://i.imgur.com/CCeU7Ah.png)
![](https://i.imgur.com/rl2H30e.png)

# Network
於network內點擊右鍵會有Replay XHR選項，當確認前端功能傳遞的參數皆為正確，僅為後端程式碼有問題時可修正後端程式碼後使用，可節省前端再次介面操作時間
![](https://i.imgur.com/oia28Uo.png)

# Mobile Mode 模擬移動設備
在不同的屏幕尺寸和分辨率下模擬網站。
通過可視化和檢查 CSS 媒體查詢進行自適應設計。
使用網絡模擬器在不影響其他標籤流量的情況下模擬您網站的性能。
針對觸摸事件、地理定位和設備方向準確模擬設備輸入
![](https://i.imgur.com/2RvSpFa.png)
![](https://i.imgur.com/75dgiFs.png)
![](https://i.imgur.com/N77JJ9F.png)

~~公司資料庫設計  不是每一家都相同~~
# 系統維護錯誤紀錄追蹤
系統錯誤紀錄table-ERROR_LOG
系統報錯位置於STACK_TRACE內可查看

常用下法-查詢系統一天內錯誤問題
```sql=
SELECT *
FROM ERROR_LOG
WHERE DATE_CREATED > SYSDATE-1
ORDER BY DATE_CREATED DESC
```
![](https://i.imgur.com/37IaIz4.png)
![](https://i.imgur.com/8br4zF7.png)

# 系統操作者紀錄追蹤
系統操作紀錄table-ACTION_LOG, ACTION_LOG_PARAMS
系統操作詳細參數可於PARAMS內查看

常用下法-用於查詢指定系統操作者於指定區間內動作
```sql=
SELECT *
FROM ACTION_LOG A, ACTION_LOG_PARAMS B
WHERE A.ID=B.ID
AND DATE_CREATED >= TO_DATE('2020/1/1','YYYY/MM/DD')
AND DATE_CREATED <= TO_DATE('2020/2/1','YYYY/MM/DD')
AND USER_ID=?
ORDER BY DATE_CREATED DESC
```
![](https://i.imgur.com/giI8XvX.png)
![](https://i.imgur.com/VaCThO2.png)

# Groovy
於後端追code時可在猜測可能錯誤位置印出對應的資料，確保程式停住或錯誤發生位置
Object可在validate()後查看errors裡面的詳細錯誤
![](https://i.imgur.com/nJVrXZj.png)

Object可用dump印出詳細資訊，並且若有錯誤也會一併印出
![](https://i.imgur.com/QELwWoP.png)

