ورود

View Full Version : چگونگی دیباک کردن یه in Process COM server



r00tkit
یک شنبه 12 تیر 1390, 12:25 عصر
سلام

یه DLL دارم و تو رجیستری ثبتش می کنم این DLL توسط یه برنامه ای دیگه ای لود و استفاده می شه

که درست کار نمی کنه

چی جوری می تونم این DLL رو دیباگ کنم

mehdi.mousavi
دوشنبه 13 تیر 1390, 14:06 عصر
سلام یه DLL دارم و تو رجیستری ثبتش می کنم این DLL توسط یه برنامه ای دیگه ای لود و استفاده می شه که درست کار نمی کنه چی جوری می تونم این DLL رو دیباگ کنم

سلام (بر مرد همیشه معترض سایت) :)
پروژه مربوط به اون DLL رو باز کنید، جایی که مد نظرتون هست یک Breakpoint بذارید، سپس از منوی Debug، گزینه Attach to process رو انتخاب کنید و Application ای که این DLL رو Load میکنه رو از لیست انتخاب کنید...

موفق باشید.

پاورقی: همچنین می تونید از DebugBreak (http://msdn.microsoft.com/en-us/library/ea9yy3ey%28v=VS.100%29.aspx) نیز استفاده کنید. بدین ترتیب هر وقت اجرا به این دستور برسه، برنامه شما Break میخوره و می تونید از اونجا روند رو پیگیری کنید. (من روش اول رو ترجیح میدم، اما برخی اوقات مجبورید از این روش استفاده کنید).

r00tkit
دوشنبه 13 تیر 1390, 14:20 عصر
استاد من کی همیشه معترض بودم :)

این DLL رو برنامه ای خاص لود نمی کنه این DLL توسط CLR توی فضای پروسس های منیج inject می شه ( یه پروفایلر ) روش بالا رو تست کرده بودم

mehdi.mousavi
دوشنبه 13 تیر 1390, 14:32 عصر
این DLL رو برنامه ای خاص لود نمی کنه این DLL توسط CLR توی فضای پروسس های منیج inject می شه ( یه پروفایلر ) روش بالا رو تست کرده بودم

OK، پس در یکی از متودهایی که اون برنامه CLR از این DLL فراخوانی میکنه، یک DebugBreak بذارید، برنامه رو Compile کنید و اجازه بدید تا در روند برنامه اصلی، این DLL جدید Inject بشه. بعد برنامه اصلی رو اجرا کنید (بصورت عادی و بدون درگیر شدن با VS) و بذارید برنامه روند اصلی خودش رو طی کنه. هر وقت اجرا به اون DebugBreak برسه، برنامه شما یک Exception میخوره و پنجره VS باز میشه و ازتون میخواد که توسط یک Debugger برنامه رو Debug کنید. از پنجره مورد نظر Debugger رو انتخاب کنید (در مثال شما VS) و Yes رو بزنید. اینطوری COM Server شما در VS باز میشه و میتونید کد رو Trace کنید... (در اصل اینجا با DebugBreak بطور خودکار VS رو به پروسه مورد نظر Attach می کنیم).

موفق باشید.