मुझे यकीन नहीं है कि वहां कितने उपयोगकर्ता हैं जो एलसीसी सी कंपाइलर और विंडोज के लिए वेबिट जीयूआई का उपयोग करते हैं लेकिन इसमें एक "फीचर" है जो काफी परेशान हो सकती है। जब आप डीबगर के साथ एक एप्लिकेशन शुरू करते हैं, तो यह मुख्य फ़ंक्शन की शुरुआत में एप्लिकेशन को तोड़ देता है। मैं इसे कैसे बंद कर सकता हूं ताकि डीबगर तुरंत तब तक कोड निष्पादित कर लेता है जब तक कि मैं इसे रोकता हूं या यह एक ब्रेक पॉइंट हिट करता है जिसे मैंने बनाया है?एलसीसी - आवेदन की शुरुआत में तोड़ने से डीबगर को कैसे रोकें?
उत्तर
वाह, लोग अभी भी एलसीसी का उपयोग करते हैं ... पिछली बार मैंने इसका इस्तेमाल किया था ~ 10 साल पहले।
मैंने wedit.exe
को संकुचित किया और पुष्टि कर सकते हैं कि इस व्यवहार को अक्षम करने का कोई आधिकारिक तरीका नहीं है।
यदि यह आपके लिए काम करता है तो मैंने बाइनरी को पैच किया। मैंने इसे here अपलोड किया।
उन लोगों के लिए जो वायरस के बारे में चिंतित हैं और इस तरह मैंने wedit
को here से लिया है। बॉक्स के बारे में कहते हैं कि यह संस्करण 4.0 16 सितं, 2009
यहाँ पर संकलित है जो उन लोगों के रुचि के लिए समारोह समझौता किया गया है:
int __cdecl sub_44CF0D(HANDLE hProcess)
{
int result; // [email protected]
int v2; // [email protected]
int v3; // [email protected]
int v4; // [email protected]
int v5; // [email protected]
int v6; // [sp+10h] [bp-68h]@11
int v7; // [sp+14h] [bp-64h]@1
struct _DEBUG_EVENT DebugEvent; // [sp+18h] [bp-60h]@1
v7 = 1;
result = WaitForDebugEvent(&DebugEvent, dwMilliseconds);
if (result)
{
sub_44C67A(&DebugEvent);
if (DebugEvent.dwDebugEventCode == 1)
{
if (DebugEvent.u.Exception.ExceptionRecord.ExceptionCode == EXCEPTION_ACCESS_VIOLATION
&& !(dword_482860 & 1)
&& !dword_484328
&& DebugEvent.u.Exception.dwFirstChance)
{
sub_44E1A5(0);
sub_44CEB2(v2);
return ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, 0x80010001u);
}
v6 = 0;
v7 = sub_44D2C4((int)&DebugEvent, hProcess, (int)&v6);
if (v6 && DebugEvent.u.Exception.dwFirstChance)
return ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, 0x80010001u);
goto LABEL_41;
}
if (DebugEvent.dwDebugEventCode == 3)
{
if (dword_483C94)
{
dword_48428C = 1;
LABEL_41:
if (dword_483C6C)
sub_44ECDC();
if (v7)
{
result = ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, 0x10002u);
}
else
{
dword_49BF68 = 1;
ResetEvent(dword_484AE4);
dword_4843C8 = DebugEvent.dwThreadId;
result = sub_4524CD();
}
return result;
}
Sleep(0x32u);
dword_49BF64 = 1;
dword_49BF68 = 1;
qword_483C74 = __PAIR__(
(unsigned int)DebugEvent.u.Exception.ExceptionRecord.ExceptionAddress,
DebugEvent.u.Exception.ExceptionRecord.ExceptionInformation[2]);
if (dword_484288)
::hProcess = (HANDLE)DebugEvent.u.Exception.ExceptionRecord.ExceptionFlags;
else
::hProcess = hProcess;
dword_483C84 = DebugEvent.dwProcessId;
hThread = DebugEvent.u.Exception.ExceptionRecord.ExceptionRecord;
dword_483C9C = (HANDLE)DebugEvent.u.Exception.ExceptionRecord.ExceptionCode;
dwThreadId = DebugEvent.dwThreadId;
dword_483C94 = 0;
if (sub_45A83A())
{
v4 = sub_4026A6(28);
dword_484330 = v4;
*(_DWORD *)(v4 + 4) = hThread;
*(_DWORD *)(v4 + 8) = dwThreadId;
if (dword_484288)
{
sub_455B58();
}
else
{
Sleep(0x64u);
v5 = sub_45AAFC();
if (!v5)
return PostMessageA(dword_4849EC, 0x111u, 0x64u, 0);
if (dword_484354)
goto LABEL_50;
sub_455B58();
if (dword_483C70 && *(_DWORD *)(dword_483C70 + 52))
*(_DWORD *)(*(_DWORD *)(dword_483C70 + 52) + 36) = sub_451577(**(_DWORD **)(dword_483C70 + 52), 1u);
v5 = *(_DWORD *)(dword_483C70 + 52);
if (v5 && *(_DWORD *)(v5 + 36))
{
LABEL_50:
if (!dword_483C6C)
sub_44E92A(v5);
sub_44CC3D();
sub_451600();
PostMessageA(dword_4849EC, 0x111u, 0x154u, 0);
}
else
{
sub_4029CA("Imposible to find %s\nRunning without source display", *(_DWORD *)(dword_483C70 + 20));
dword_484344 = 1;
v7 = 1;
PostMessageA(dword_4849EC, 0x111u, 0x154u, 0);
}
}
goto LABEL_41;
}
dword_484338 = 1;
v3 = sub_44DB56(qword_483C74);
if (v3)
*(_BYTE *)(v3 + 29) &= 0xFDu;
result = ContinueDebugEvent(DebugEvent.dwProcessId, DebugEvent.dwThreadId, 0x10002u);
}
else
{
if (DebugEvent.dwDebugEventCode != 5)
goto LABEL_41;
if (DebugEvent.dwProcessId != dword_483C84)
{
v7 = 1;
goto LABEL_41;
}
dword_49BF64 = 0;
dword_49BF68 = 1;
dword_481614 = 0;
result = sub_402A32(4520, SLOBYTE(DebugEvent.u.Exception.ExceptionRecord.ExceptionCode));
if (!dword_483C6C)
result = sub_40B155(lpCmdLine);
}
}
else
{
if (dword_483C6C)
result = sub_44ECDC();
}
return result;
}
if
LABEL_50
के तहत मैं क्या समझौता (0x75 से 0xEB करने के लिए) है।
जगह को स्थान देना आसान था क्योंकि मुझे WriteProcessMemory की उम्मीद थी कि इसे 0xCC लिखने के लिए इस्तेमाल किया जा रहा है, जो कि डिबग किया जा रहा है।
ठीक है, मैं इसे जवाब के रूप में चिह्नित करने से पहले थोड़ी देर इंतजार करना चाहता था, बस कुछ अन्य समाधान स्वयं ही प्रदान किए जाने पर। यह निश्चित रूप से समस्या को हल करता है, जैसा कि मैंने आशा की थी उतनी सुंदरता के रूप में नहीं। समाधान के लिए धन्यवाद! – RLH
- 1. वीएस सी # यूनिट परीक्षण को अपवादों पर तोड़ने से रोकें
- 2. अपवादों को फेंकते समय विजुअल स्टूडियो को तोड़ने से रोकें
- 3. डीबगर में तोड़ने से अपवाद को दबाने के लिए डीबगर में एक तरीका है?
- 4. शैल स्क्रिप्ट पैरामीटर को तोड़ने से एसएसएच को रोकें
- 5. डीबगर StepThroughAttribute को मेरी गैर-एक्सएसडी-जेनरेटेड आंशिक कक्षा में आवेदन करने से रोकें?
- 6. दावा पर डीबगर को तोड़ने में विफल रहा
- 7. AVAudioPlayer ध्वनि को रोकें और शुरुआत से इसे
- 8. अज़ूर कार्यकर्ता की भूमिका को तोड़ने से अनचाहे अपवादों को रोकें
- 9. मेरे आवेदन को बंद करने से पीछे बटन को रोकें
- 10. विजुअल स्टूडियो - डीबगर शुरू करने से F11 को रोकें?
- 11. विजुअल स्टूडियो डीबगिंग को एक स्पष्ट "अनचाहे अपवाद" पर तोड़ने से रोकें
- 12. क्या एक्लिप्स डीबगर में प्रत्येक ऑब्जेक्ट संदर्भ को तोड़ने की संभावना है?
- 13. दृश्य स्टूडियो डीबगर को कैसे रोकें जब एक #
- 14. आवेदन रोकें/फिर से शुरू करें राज्य
- 15. डीबग परीक्षण चलाने को तोड़ने से अपेक्षित अपवादों को कैसे रोकें?
- 16. वर्तमान अनुरोध के लिए रेल डीबगर को कैसे रोकें
- 17. असेंबली में कदम उठाने से विजुअल स्टूडियो डीबगर को कैसे रोकें?
- 18. EditText मूल्य की शुरुआत में @
- 19. कार्यक्रम निष्पादन की शुरुआत में ब्रेकपॉइंट कैसे सेट करें
- 20. क्रोम में "संपत्ति परिवर्तन को तोड़ने" कैसे करें?
- 21. रोकें एक स्प्रिंग WebFlow आवेदन
- 22. java.sql.SQLException: परिणाम सेट की शुरुआत से पहले
- 23. Android में सोने की रोशनी को कैसे रोकें
- 24. एक्सकोड की डीबगर विंडो में असेंबली को कैसे अक्षम करें?
- 25. ... तोड़ने
- 26. हैंडलर को कैसे रोकें?
- 27. क्रोम डीबगर में अभिव्यक्ति की अगली घटना को कैसे खोजें?
- 28. क्या Google क्रोम को डीबगर में तोड़ने के लिए जावास्क्रिप्ट फ़ंक्शन है?
- 29. मैवेन को विदेशी भंडारों की जांच से कैसे रोकें?
- 30. विंडोज़ को कॉम क्लास की जानकारी कैशिंग से कैसे रोकें?
अच्छा सवाल! मैंने सी को पढ़ाने के लिए अतीत में एलसीसी-विन 32 का उपयोग किया है, और नए लोगों के लिए यह एक अच्छी सुविधा है, लेकिन मैं देख सकता हूं कि यह परेशान कैसे हो सकता है। मैंने मुख्य() में शुरुआती ब्रेस पर ब्रेकपॉइंट को सेट और अनसेट करने का प्रयास किया लेकिन किसी भी तरह से यह वहां रुक गया। मैंने Wedit के कमांड लाइन पैरामीटर (एलसीसी-विन 32 के लिए आईडीई) को देखा लेकिन फ्लैग नहीं हैं जो स्टार्टअप पर क्या करता है इसे नियंत्रित करते हैं। –
मैं एलसीसी से परिचित नहीं हूं, लेकिन उपयोगकर्ता दस्तावेज़ीकरण से - "आप अपने सभी ब्रेकपॉइंट्स देख सकते हैं और मेनू कंपाइलर-> ब्रेकपॉइंट्स (या डीबग-> ब्रेकपॉइंट्स संपादित करें) से चुनकर उन्हें संपादित/हटा सकते हैं। क्या आपने यहां मुख्य() पर ब्रेकपॉइंट देखा था? –
कोई ब्रेकपॉइंट नहीं है। परेशानी इस बात पर ध्यान दिए बिना कि ब्रेकपॉइंट सेट किया गया है या नहीं, डीबगर/संपादक हमेशा मुख्य() विधि की पहली पंक्ति पर टूट जाता है। विंडबग और वीएस में – RLH