2017-02-14 2 views
0

많은 가상 환경, 특히 Python을 사용하는 경향이 있습니다. 일부 코드는 특정 가상 환경에서 실행되었으며 일부 C++ 코드가 포함되어 있습니다. 이 코드 코어 덤프 및 디버그하려면 lldb 사용하고 싶습니다.Python 가상 환경의 lldb

그러나,이

; lldb a.out -c core.17915 
Core file '/path/core.17915' (x86_64) was loaded. 
Process 0 stopped 
* thread #1: tid = 0, 0x0000000000559689 

[...] ← lots of irrelevant data for this question. 

(lldb) frame variable 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named lldb.embedded_interpreter 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
NameError: name 'run_one_line' is not defined 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
NameError: name 'run_one_line' is not defined 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
NameError: name 'run_one_line' is not defined 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
NameError: name 'run_one_line' is not defined 

zsh: segmentation fault (core dumped) lldb a.out -c core.17915 

내가 가상 환경 외부에 잘 실행 lldb를 가져올 수 있습니다 얻을 수 있지만 가상 환경에서 그렇게 할 수 없습니다. 나는 가상 환경에 모든 시스템 모듈을 추가하는 것을 원하지 않습니다. 가상 환경을 처음부터 가지고있는 지점을 이기지 못하게합니다.

내 가상 환경에 lldb 모듈을로드하려면 어떻게해야합니까?

+0

우분투 16.10에서 비슷한 오류가 발생했습니다. 'python-lldb-3.8'은 종속성으로 표시되지 않으므로 수동으로 설치해야합니다. – isanae

답변

0

이 문제는 가상 환경이 기본적으로 시스템에 설치된 모듈을 복사하지 않는다는 사실을 나타냅니다. 가상 환경의 요점은 무엇입니까? 그러나 개발 환경에서는 이러한 모듈 중 일부가 필요합니다. 따라서 tox.ini에서 게시 작업을 수행하는 스크립트 (commands 경유)를 호출합니다. 그 스크립트에서 나는 가지고있다

lib_python_path="/usr/lib64/python2.7" 
dst="$VIRTUAL_ENV/lib/python2.7/site-packages" 
… 
# Copy lldb, iff it exists. 
if [ -d "${lib_python_path}/site-packages/lldb" ] 
then 
    ln -f -s ${lib_python_path}/site-packages/lldb ${dst} 
fi 

이것은 트릭을하는 것처럼 보인다.

0

"이 질문과 관련이없는 많은 데이터"에서 뭔가가 의심 스러울 수 있습니다. ;)

당신은 어떤

$ echo "int main() { }" > /tmp/a.c 
$ clang -g -o /tmp/a.out /tmp/a.c 
$ lldb -x /tmp/a.out 
(lldb) br s -n main 
(lldb) r 
(lldb) fr v 

(또는 gcc)과 같은 간단한 프로그램을 컴파일 할 수 있습니다. 그게 효과가 있니? 그래도 작동하지 않는다면, lldb를 어떻게 설치했는지 꽤 이상합니다. 그것이 작동한다면, 당신이이 두 가지 예에서 다르게하고있는 것을 알아 내십시오.

+0

평범한 시스템과 가상 환경에서 간단한 디버그 세션을 (위와 같이) 시도해보십시오. 어느 부분이 책임이 있는지 확인하십시오. 그것은 당신의 시스템에 잘못 구성된 것입니까? 가상 환경과 관련이 있습니까? 디버그 세션의 명령과 관련이 있습니까? 가장 기본적인 디버그 세션으로 시작하여 실패 할 때까지 변수를 다시 추가하십시오. –

+0

이것은 문제를 좁히는 데 도움이되지 않습니다. 간단한 테스트는 파이썬을 시작하고 가상 환경 외부에서 잘 작동하는'import lldb'를 실행하고 깨끗한 가상 환경에서'ImportError'를 발생시키는 것입니다. – Sardathrion