.TH WINEDUMP 1 "October 2005" "Wine 11.17" "Wine Developers Manual" .SH "نام (NAME)" winedump \- ابزار کار با DLL در Wine .SH "خلاصه دستور (SYNOPSIS)" .BR "winedump " [ "-h " "| " .BI "sym " sym | .BI "spec " dll | .BI "dump " file .RI "] [" "mode_options" ] .SH "توضیحات (DESCRIPTION)" دستور .B winedump ابزاری در Wine است که با هدف کمک به موارد زیر طراحی شده است: \- الف: پیاده‌سازی مجدد یک Win32 DLL برای استفاده در Wine، یا .br \- ب: کامپایل یک برنامه Win32 با Winelib که از DLLهای x86 استفاده می‌کند .PP برای هر دو وظیفه، به‌منظور امکان پیوند (link) به توابع Windows به مقداری کد واسط (glue code) نیاز است. این «واسط» در قالب یک فایل \fI.spec\fR ارائه می‌شود. فایل \fI.spec\fR به همراه مقداری کد ساختگی (dummy code)، برای ایجاد یک \fI.so\fR متناظر با DLL ویندوز در Wine استفاده می‌شود. سپس برنامه \fBwinebuild\fR می‌تواند فراخوانی‌های انجام‌شده به توابع DLL را برطرف (resolve) کند. .PP ایجاد یک فایل \fI.spec\fR کاری پرزحمت و زمان‌بر است که احتمال بروز خطا در آن زیاد است. هدف \fBwinedump\fR این است که این فرآیند را خودکار کرده و بخش اعظم کد پشتیبان مورد نیاز برای DLL شما را بسازد. علاوه بر این، می‌توانید با استفاده از \fBwinedump\fR کدهایی تولید کنید که با امکان ردیابی فراخوانی‌های انجام‌شده به DLL و (در برخی موارد) تشخیص خودکار پارامترها، قراردادهای فراخوانی (calling conventions) و مقادیر بازگشتی توابع DLL، به شما در پیاده‌سازی مجدد DLL کمک کند. .PP کاربرد دیگر این ابزار، نمایش و استخراج (dump) اطلاعات مربوط به یک فایل ایمیج در قالب PE یا یک DLL سی و دو بیتی است. هنگام استفاده در این حالت، \fBwinedump\fR عملکردی مشابه ابزارهایی مانند pedump دارد که توسط بسیاری از ارائه‌دهندگان کامپایلر Win32 عرضه می‌شوند. .PP در نهایت، از \fBwinedump\fR می‌توان برای رمزگشایی و خواناسازی (demangle) نمادهای C++ نیز استفاده کرد. .SH "حالت‌ها (MODES)" دستور .B winedump می‌تواند در چندین حالت مختلف اجرا شود. آرگومان نخست برنامه تعیین می‌کند که \fBwinedump\fR در چه حالتی اجرا خواهد شد. .IP \fB-h\fR حالت راهنما. راهنمای اولیه نحوه استفاده چاپ می‌شود. .IP \fBdump\fR برای استخراج و نمایش محتویات یک فایل. .IP \fBspec\fR برای تولید فایل‌های .spec و DLLهای ساختگی (stub). .IP \fBsym\fR حالت نماد. برای خواناسازی و رمزگشایی نمادهای C++ به کار می‌رود. .SH "گزینه‌ها (OPTIONS)" گزینه‌های حالت به حالتی که به عنوان نخستین آرگومان مشخص شده است بستگی دارند. .PP .SS "حالت راهنما (Help mode)" هیچ گزینه‌ای استفاده نمی‌شود. برنامه اطلاعات راهنما را چاپ کرده و خارج می‌شود. .SS "حالت استخراج (Dump mode)" .IP \fIfile\fR محتویات \fIfile\fR را استخراج و نمایش می‌دهد. قالب‌های مختلف فایل پشتیبانی می‌شوند (PE، NE، LE، Minidumps، .lnk). .IP \fB-C\fR رمزگشایی و خواناسازی نمادها (symbol demangling) را فعال می‌کند. .IP \fB-f\fR اطلاعات سرآیند فایل را استخراج می‌کند. این گزینه فقط ساختارهای سرآیند استاندارد PE را همراه با بخش‌های COFF موجود در فایل نمایش می‌دهد. .IP "\fB-j \fIdir_name\fR" برای فایل‌هایی که سرآیند آن‌ها به دایرکتوری‌ها اشاره دارد، تنها محتوای دایرکتوری \fIdir_name\fR را نمایش می‌دهد. برای فایل‌های PE، دایرکتوری‌های \fBimport\fR، \fBexport\fR، \fBdebug\fR، \fBresource\fR، \fBtls\fR، \fBloadcfg\fR، \fBclr\fR، \fBreloc\fR و \fBexcept\fR و همچنین بخش \fBapiset\fR پیاده‌سازی شده‌اند. برای فایل‌های NE، دایرکتوری‌های \fBexport\fR و \fBresource\fR پیاده‌سازی شده‌اند. .IP \fB-x\fR همه‌چیز را نمایش می‌دهد (dump). این دستور تمام اطلاعات موجود (از جمله تمامی دایرکتوری‌های در دسترس \- گزینه \fB-j\fR را ببینید) را درباره فایل چاپ می‌کند. از آنجا که خروجی بسیار زیادی تولید خواهد شد، ممکن است بخواهید خروجی را به \fBmore\fR/\fBless\fR یا یک فایل هدایت کنید. .IP \fB-G\fR محتوای بخش اشکال‌زدایی (debug section) را در صورت وجود استخراج می‌کند (فعلاً تنها اطلاعات stabs پشتیبانی می‌شود). .SS "حالت Spec (Spec mode)" .IP \fIdll\fR از \fIdll\fR به عنوان فایل ورودی استفاده کرده و کد پیاده‌سازی را تولید می‌کند. .IP "\fB-I \fIdir\fR" به دنبال پیش‌نمونه‌ها (prototypes) در دایرکتوری \fIdir\fR می‌گردد (گزینه \fB-c\fR را نیز در بر دارد). در مورد DLLهای ویندوز، این می‌تواند دایرکتوری include استاندارد از کامپایلر شما، یا دایرکتوری include مربوط به SDK باشد. اگر یک سند متنی حاوی پیش‌نمونه‌ها دارید (مانند مستندات)، آن هم قابل استفاده است؛ با این حال ممکن است نیاز باشد برخی خطوط غیرکدی را حذف کنید تا از تجزیه درست پیش‌نمونه‌ها اطمینان حاصل شود. آرگومان \fIdir\fR همچنین می‌تواند یک مشخصه فایل باشد (مانند \fIinclude/*\fR). اگر حاوی نویسه‌های عام (wildcard) است، باید آن را در نقل‌قول قرار دهید تا پوسته آن را بسط ندهد. اگر هیچ پیش‌نمونه‌ای ندارید، مقدار \fI/dev/null\fR را به عنوان \fIdir\fR مشخص کنید. ممکن است \fBwinedump\fR همچنان بتواند مقداری کد stub قابل استفاده برای شما تولید کند. .IP \fB-c\fR کد اسکلتی (skeleton code) تولید می‌کند (نیازمند \fB-I\fR). این گزینه به \fBwinedump\fR دستور می‌دهد تا برای هر تابع در DLL استاب‌های تابعی (function stubs) ایجاد کند. هنگامی که \fBwinedump\fR هر نماد صادرشده را از DLL مبدأ می‌خواند، ابتدا سعی می‌کند نام آن را رمزگشایی (demangle) کند. اگر نام یک نماد C++ باشد، آرگومان‌ها، کلاس و مقدار بازگشتی همگی در نام نماد کدگذاری شده‌اند. Winedump این اطلاعات را به پیش‌نمونه یک تابع C تبدیل می‌کند. در صورت عدم موفقیت، فایل(های) مشخص‌شده در آرگومان \fB-I\fR برای یافتن یک پیش‌نمونه تابع جستجو می‌شوند. در صورت پیدا شدن، برای مرحله بعدی فرآیند یعنی تولید کد استفاده خواهد شد. .IP \fB-t\fR ردیابی آرگومان‌ها (TRACE) (گزینه \fB-c\fR را نیز در بر دارد). این گزینه کدی مشابه با \fB-c\fR تولید می‌کند، با این تفاوت که هنگام فراخوانی تابع، آرگومان‌ها در خروجی چاپ می‌شوند. ساختارهایی که بر اساس مقدار (by value) پاس داده می‌شوند به صورت "struct" چاپ می‌شوند، و توابعی که لیست آرگومان متغیر می‌پذیرند "..." را چاپ می‌کنند. .IP "\fB-f \fIdll\fR" فراخوانی‌ها را به \fIdll\fR هدایت (forward) می‌کند (گزینه \fB-t\fR را نیز در بر دارد). این پیچیده‌ترین سطح تولید کد است. همان کد \fB-t\fR تولید می‌شود، اما پشتیبانی برای هدایت فراخوانی‌ها به یک DLL دیگر نیز افزوده می‌گردد. DLL مقصد برای هدایت فراخوانی‌ها در \fIdll\fR مشخص می‌شود. .IP \fB-D\fR تولید مستندات. به‌طور پیش‌فرض، \fBwinedump\fR یک کامنت استاندارد در سرآیند هر تابعی که تولید می‌کند قرار می‌دهد. استفاده از این گزینه باعث می‌شود \fBwinedump\fR یک قالب سرآیند کامل را برای مستندسازی استاندارد Wine با فهرست کردن پارامترها و مقدار بازگشتی تابع در خروجی تولید کند. .IP "\fB-o \fIname\fR" تنظیم نام DLL خروجی (پیش‌فرض: \fBdll\fR). به‌طور پیش‌فرض، اگر \fBwinedump\fR روی DLL \fIfoo\fR اجرا شود، فایل‌های \fIfoo.spec\fR، \fIfoo_main.c\fR و غیره را ایجاد کرده و پیشوند \fIFOO_\fR را به ابتدای تمام توابع تولیدشده اضافه می‌کند. اگر \fB-o \fIbar\fR داده شود، این موارد به ترتیب به \fIbar.spec\fR، \fIbar_main.c\fR و \fIBAR_\fR تبدیل خواهند شد. این گزینه بیشتر در زمان تولید یک DLL هدایت‌کننده فراخوانی (forwarding DLL) کاربرد دارد. .IP \fB-C\fR فرض فراخوانی‌های __cdecl (پیش‌فرض: __stdcall). اگر winebuild نتواند قرارداد فراخوانی را تشخیص دهد، به‌طور پیش‌فرض از __stdcall استفاده می‌شود مگر اینکه این گزینه مشخص شده باشد. مگر در صورت تعیین گزینه \fB-q\fR، برای هر تابعی که \fBwinedump\fR قرارداد فراخوانی آن را مشخص کند و با قرارداد فراخوانی فرضی همخوانی نداشته باشد، یک هشدار چاپ خواهد شد. .IP "\fB-s \fInum\fR" شروع جستجوی پیش‌نمونه پس از نماد شماره \fInum\fR. .IP "\fB-e \fInum\fR" پایان جستجوی پیش‌نمونه پس از نماد شماره \fInum\fR. با دادن گزینه‌های \fB-s\fR یا \fB-e\fR می‌توانید کاری کنید که \fBwinedump\fR تنها برای بخشی از توابع موجود در DLL شما کد تولید کند. این ویژگی می‌تواند برای مثال هنگام افزودن قابلیت جدید به یک DLL موجود، جهت تولید یک تابع منفرد به کار رود. .IP "\fB-S \fIsymfile\fR" جستجو تنها برای نام‌های پیش‌نمونه موجود در \fIsymfile\fR. اگر می‌خواهید فقط برای زیرمجموعه‌ای از توابع صادرشده از DLL مبدأ خود کد تولید کنید، می‌توانید با استفاده از این گزینه، یک فایل متنی حاوی نام‌های نمادها برای استخراج (هر کدام در یک خط) ارائه دهید. تنها نمادهای موجود در این فایل در DLL خروجی شما استفاده خواهند شد. .IP \fB-q\fR عدم نمایش پیشرفت (حالت بی‌صدا). هیچ خروجی چاپ نمی‌شود مگر اینکه خطایی مرگبار رخ دهد. .IP \fB-v\fR نمایش جزئیات فراوان هنگام کار (حالت پرگو). هنگام اجرای \fBwinedump\fR، ۳ سطح از خروجی وجود دارد. در سطح پیش‌فرض، زمانی که نه \fB-q\fR و نه \fB-v\fR مشخص نشده باشد، تعداد توابع صادرشده یافت‌شده در dll چاپ می‌شود، و در ادامه نام هر تابع به همراه وضعیت پردازش موفقیت‌آمیز آن هنگام پردازش نمایش می‌یابد. با تعیین گزینه \fB-v\fR، اطلاعات زیادی در حین کار \fBwinedump\fR در خروجی ریخته می‌شود: این ویژگی برای کمک به اشکال‌زدایی مشکلات در نظر گرفته شده است. .SS "حالت نماد (Sym mode)" .IP \fIsym\fR نماد C++ با نام \fIsym\fR را رمزگشایی و خوانا (demangle) کرده و سپس خارج می‌شود. .SH "فایل‌ها (FILES)" .IP function_grep.pl اسکریپت Perl مورد استفاده برای بازیابی پیش‌نمونه تابع. .PP فایل‌های خروجی در .BR "حالت " spec برای .IR foo.dll : .IP foo.spec .RS این فایل \fI.spec\fR است. .RE .IP foo_dll.h,\ foo_main.c .RS این‌ها فایل‌های کد منبع حاوی حداقل کد لازم برای ساخت یک DLL ساختگی (stub) هستند. فایل C شامل یک تابع است، \fIFOO_Init\fR، که کاری انجام نمی‌دهد (اما وجود آن الزامی است). .RE .IP Makefile.in .RS این یک الگو برای \fBconfigure\fR جهت ساخت makefile است. این فایل برای DLLهایی طراحی شده که قرار است در درخت کد منبع Wine قرار گیرند. .RE .SH "گزارش باگ‌ها (BUGS)" رمزگشایی نام C++ به طور کامل با پیاده‌سازی msvcrt هماهنگ نیست. شاید ارسال نام C++ شما به مجموعه آزمون (testsuite) مربوط به msvcrt مفید باشد. .PP باگ‌ها را می‌توان در .UR https://bugs.winehq.org .B سیستم پیگیری باگ Wine .UE گزارش کرد. .SH "نویسندگان (AUTHORS)" Jon P. Griffiths .br Michael Stefaniuc .SH "در دسترس بودن (AVAILABILITY)" دستور .B winedump بخشی از توزیع Wine است که از طریق WineHQ، یعنی .UR https://www.winehq.org .B مقر توسعه Wine .UE در دسترس است. .SH "همچنین ببینید (SEE ALSO)" .BR wine (1) .br .UR https://www.winehq.org/help .B مستندات و پشتیبانی Wine .UE .