全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:18220
推到 Plurk!
推到 Facebook!

請問DebugView 要如何使用?

 
mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-05 22:54:06 IP:163.23.xxx.xxx 訂閱
DebugView要怎麼使用?請各位前輩詳細說明一下
我有看過之前前輩PO的文章 但是看不懂
小弟愚笨!!請前輩教一下
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-15 18:33:43 IP:220.130.xxx.xxx 訂閱
(1)下載DebugView (網址 http://www.microsoft.com/technet/sysinternals/Miscellaneous/DebugView.mspx),此網頁內也有簡單的使用說明
(2)下載完成之後,解開壓縮檔會有一個檔案 DbgView.exe (檔案 DbgView.chm也有使用說明),執行此執行檔就會看到一個 DebugView 視窗
(3)然後再你 BCB 的 Project 中加入以下的程式碼(看要加在哪裡,自己決定,主要是你想在 runtime 期間,顯示出來的訊息)
例如:
#include "stdio.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OutputDebugString("Button1Click");
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString sDebug="Button2Click";
OutputDebugString(sDebug.c_str());
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i=100;
AnsiString sDebug;
OutputDebugString("Button3Click");
sDebug="i=" IntToStr(i);
OutputDebugString(sDebug.c_str());
}
(4)重新編譯你的 Project,然後在外部執行(不在 BCB 開發環境中執行,也就是直接用滑鼠執行你編譯好的 exe 檔),然後分別按 Button1,Button2,Button3,就可以看到在(3)中加的那些 Debug 訊息,顯示在(2)的視窗中

------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-16 14:58:07 IP:163.23.xxx.xxx 訂閱
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OutputDebugString("Button1Click");
...............
.............
}
小弟我照步驟用 但是第4點我看不懂
不在 BCB 開發環境中執行,也就是直接用滑鼠執行你編譯好的 exe 檔// <---看不懂
exe檔在哪 怎麼執行!!請在指點一下

RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-16 15:25:54 IP:220.130.xxx.xxx 訂閱
也就是你的專案儲存的目錄(例如: C:\Project\Project1),你所編譯出來的執行檔(exe檔,例如: Project1.exe),就會儲存在那裡,你只要利用 Windows 的檔案總管,找到這個執行檔(exe檔,例如: Project1.exe),然後用滑鼠連續點兩下,就可以執行了!
備註: 如果你不知道自己的專案儲存在哪個目錄底下,可在 BCB 開發環境中,按「File/Save Project As」就可以知道了!
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-24 01:40:17 IP:163.23.xxx.xxx 訂閱
麻煩各位前輩  可不可以用圖示教我
我怎麼都弄不出來
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-24 09:52:42 IP:59.124.xxx.xxx 未訂閱
何不把你的流程寫出來讓前輩們看看問題在哪邊?
mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-01-24 13:17:23 IP:163.23.xxx.xxx 訂閱
1.先打開Debug.exe ,我有看到一個視窗
2.程式中加入要Debug的地方
void __fastcall TForm1::Button5Click(TObject *Sender)
{
OutputDebugString("Button5Click"); <---加在這裡
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
if (Image1->Picture->Bitmap->Empty==true)
ShowMessage("請載入圖檔!!");
Byte *ptr;
Bitmap1->LoadFromFile("A.bmp");
Image2->Picture->Assign(Bitmap1);

int r,g,b;
int gray;
int i,j;
Bitmap1->Assign(Image2->Picture->Bitmap);
Bitmap1->PixelFormat = pf24bit;//24bit
for(j=0;jHeight;j )
{
ptr = (Byte *)Bitmap1->ScanLine[j];
for(i=0;iWidth;i )
{
b=ptr[i*3];
g=ptr[i*3 1];
r=ptr[i*3 2];
gray=0.299*r 0.587*g 0.114*b;
if(gray>125)
gray=255;
else
gray=0;
ptr[i*3]=(Byte)gray;
ptr[i*3 1]=(Byte)gray;
ptr[i*3 2]=(Byte)gray;
}
}
Image2->Stretch=true;
Image2->Height *=1;
Image2->Width *=1;
Image2->Picture->Assign(Bitmap1);
Image2->Picture->SaveToFile("B.bmp");
delete Bitmap1;
}
3.然後我去執行Project1.exe 點選Button5按鍵
4.會在Debug.exe 視窗中顯示程式 <---沒看到任何東西
我是哪個步驟弄錯了 請前輩指點!! 感恩
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-01-24 13:49:42 IP:59.124.xxx.xxx 未訂閱
我試也OK,會看到字串顯示在DebugView視窗上
想確認你的使用方式和設定
1.你怎麼執行你的執行檔?
2.DebugView的Capture和Options的選項勾選了哪些?



mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-01-24 14:01:47 IP:163.23.xxx.xxx 訂閱
1.點選Project1.exe 2下  執行,從按鍵1按到5
2.Capture我勾選了capture win32,capture kernel,pass-through,capture events
Options勾選了win32 PIDs,force carriage returns,auto scroll
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-01-24 14:59:52 IP:59.124.xxx.xxx 未訂閱
使用方式和選項都沒錯
1.能否開新的專案來試看看?
2.你的程式是否會執行到按鈕事件當中的程式碼?
可加個ShowMessage("Btn Click");確定是否進入該按鈕事件中




mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-01-24 15:53:13 IP:163.23.xxx.xxx 訂閱
taishyang 大大你好
我開新專案加入
OutputDebugString("Button2Click");
ShowMessage("Btn Click");

可以在DebugView視窗顯示,但是在舊專案加入這訊息他無法顯示
這是什麼問題呢?
還有我在新專案中是不是只要按一次他就會顯示一次
這是我按3次的結果, 這是什麼意識 是算沒錯誤?
# Time Debug Print
0 0.00000000 [1048] Button2Click
0 6.28195233 [1048] Button2Click
0 9.04819479 [1048] Button2Click


taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-01-24 16:09:58 IP:59.124.xxx.xxx 未訂閱

taishyang 大大你好
我開新專案加入
OutputDebugString("Button2Click");
ShowMessage("Btn Click");
可以在DebugView視窗顯示,但是在舊專案加入這訊息他無法顯示
這是什麼問題呢?
所以我說你要Trace一下你專案中的程式是否會進入到按鈕的事件中?
倘若不會進入該事件中,自然在DebugView中看不到輸出的結果


還有我在新專案中是不是只要按一次他就會顯示一次
這是我按3次的結果, 這是什麼意識 是算沒錯誤?

應該反問你,你預期在DebugView中要有什麼樣的結果?
前面的數字是表示時間,可以按下[Options]->[Clock Time]來切換


#? Time???? Debug Print
0? 0.00000000? [1048] Button2Click
0? 6.28195233? [1048] Button2Click
0? 9.04819479? [1048] Button2Click


mp_0223
一般會員


發表:16
回覆:32
積分:9
註冊:2006-10-02

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-01-24 16:14:37 IP:163.23.xxx.xxx 訂閱
謝謝前輩的教導!!
系統時間:2024-05-07 0:04:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!