PDA

View Full Version : روش Trace کردن یک سرویس



A.Nemati
سه شنبه 08 آبان 1386, 14:26 عصر
توی شرکت مجبور شدم که یک سرویس رو Trace کنم، با کمک یکی از دوستان این کار انجام شد. فکر کردم شاید برای بقیه هم جالب باشه:
1- اگر سرویس استارت است، آنرا استاپ کنید.
2- برنامه را به صورت کامل کامپایل کنید.
3- اگر سرویس هنوز نصب نشده، آنرا نصب کنید (آنرا استارت نکنید).
4- در پنجره Services (در Control Panel\Administrative Tools)، روی سرویس مورد نظر راست کلیک کرده، پنجره مشخصات (Properties) آنرا باز کنید. در این پنجره بر روی تب Log On، رفته، گزینه Allow service to interact with desktop را تیک بزنید.
5- با دستور Regedit در Run ویندوز، پنجره Registry Editor را باز کنید و به سراغ کلید
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
بروید
6- در آنجا یک کلید جدید همنام exe سرویس خود بسازید (مثلا MyService.exe) - با راست کیلک روی کلید CurrentVersion.
7- داخل کلید ساخته شده یک متغیر String Value بسازید - با راست کیلک روی کلید MyService.exe.
8- نام متغیر خود را Debugger بگذارید.
9- روی متغیر Debugger دوبار کلیک کنید و در پنجره باز شده، مقدار متغیر را برابر آدرس کامل مسیر دلفی خود قرار دهید (مثلا C:\Program Files\Borland\Delphi7\Bin\delphi32.exe).
10- بد نیست که یک بار دلفی را بسته و مجددا باز کنید. برنامه را در آن باز کرده و دوباره بطور کامل آنرا کامپایل کنید (قبلا از استاپ بودن سرویس مطمئن شوید).
11- حالا وقت آن است که سرویس را استارت کنید.
12- در دلفی به منوی Run رفته، گزینه Attach to Process... را انتخاب کنید. اگر در پنجره باز شده، در لیست سرویس‌ها، نام سرویس خود را مشاهده نمی‌کنید، گزینه Show System Processes را تیک بزنید. سرویس خود را انتخاب کرده، دکمه Attach را بزنید.

اگر تا اینجا مراحل را درست رفته باشید، و مشکلی نباشد، باید پنجره CPU را در دلفی مشاهده کنید، حال شما دکمه F9 را بزنید، پنجره CPU را ببندید و BreakPointهای خود را بگذارید.

موفق باشید.

AlirezaBahredar
سه شنبه 08 آبان 1386, 21:15 عصر
فوق العاده بود.