मैं एफएफएमपीईजी के लिए पैच पर काम कर रहा हूं और मुझे अपना कोड डीबग करने की आवश्यकता है। मैं एक बाहरी पुस्तकालय लोड कर रहा हूं, और विभिन्न लाइब्रेरी संस्करणों का परीक्षण करने के लिए, मेरे पास अलग-अलग फ़ोल्डर्स हैं। यह चुनने के लिए कि मैं किस का उपयोग करना चाहता हूं, मैं DYLD_LIBRARY_PATH=/path/to/lib/dir ./ffmpeg
का उपयोग कर रहा हूं और यह ठीक काम करता है। लेकिन जब मैं इसे lldb
के भीतर आज़माता हूं, तो यह dyld: Library not loaded
और Reason: image not found
कहता है। यह प्री-एक्सकोड 7.1 काम करने के लिए प्रयोग किया जाता था, लेकिन मैंने हाल ही में अपग्रेड किया और यह काम करना बंद कर दिया।अब मेरे पर्यावरण चर को आगे बढ़ाए क्यों नहीं?
यहाँ मेरी MVCE है:
#include <stdio.h>
#include <stdlib.h>
int main() {
char* str = getenv("DYLD_LIBRARY_PATH");
if (str) puts(str);
else puts("(null)");
return 0;
}
इस कार्यक्रम चल रहा है के रूप में इस उत्पादन का उत्पादन:
$ ./a.out
(null)
$ DYLD_LIBRARY_PATH=/tmp ./a.out
/tmp
कि ठीक लग रहा है। लेकिन lldb यह विफल रहता है जब मैं का उपयोग करने का प्रयास करें:
$ DYLD_LIBRARY_PATH=/tmp lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) run
Process 54255 launched: './a.out' (x86_64)
(null)
Process 54255 exited with status = 0 (0x00000000)
वातावरण चर सेट करने के लिए अंदर lldb काम करता है की कोशिश कर रहा:
lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) env DYLD_LIBRARY_PATH=/tmp
(lldb) run
Process 54331 launched: './a.out' (x86_64)
/tmp
Process 54331 exited with status = 0 (0x00000000)
lldb संस्करण (यह Xcode 7.1 से है):
$ lldb --version
lldb-340.4.110
प्रश्न: क्या यह एक विशेष नई "फीचर" है, या यह एलएलडीबी में एक नई बग है (या मैं पूरी तरह से पागल हूं और यह कभी भी काम करने के लिए उपयोग नहीं किया जाता है)? मैं काफी सकारात्मक एलएलडीबी DYLD_LIBRARY_PATH
पर्यावरण चर को आगे बढ़ाने के लिए प्रयोग किया जाता हूं, तो अब यह कैसे नहीं आता है?
संपादित करें: यह ओएस एक्स 10.11.1 पर है।
पुष्टि की [यहां] (https://www.mail-archive.com/[email protected]/msg00779.html) जेसन मोल्डा द्वारा (जो एलएलडीबी डेवलपर्स में से एक है)। –