"응용 프로그램을 시작하는 동안 오류가 발생했습니다"는 어떻게 진단합니까?


26

내가 작성한 my-app.desktop프로그램 의 파일을 만들었습니다 . 두 번 클릭하면 " 응용 프로그램을 시작하는 동안 오류가 발생했습니다 "라는 오류 메시지 가 나타납니다 . 문제가 무엇인지에 대한 자세한 정보를 얻으려면 어떻게해야합니까?

대화 상자의 "세부 사항"섹션에 대한 참조를 보았지만 내가 본 것과 같은 것은 없습니다. Mac에 있다면 콘솔 앱을 열어 오류가 기록되었는지 확인했지만 우분투와 비슷한 것을 배우지 못했습니다.

(유사한 다른 제목의 질문과 달리이 특정 .desktop 파일의 문제점을 묻지 않고 일반적인 방법을 알고 싶습니다.)


1
터미널에서 Exec 라인을 실행하고 출력 결과가 무엇인지 알지만 데스크탑 파일이 정상입니까? 터미널에서 확인하고 실행해야 할 수도 있습니다.
Jacob Vlijm

@Jacob stderr에 유용한 것을 넣는 "터미널에서 실행"하는 방법이 있다면이 질문에 대한 답이 될 것입니다.
Kevin Reid

1
@terdon 나는 그것을 시도했고, ( 다음 문제로) 환경이 중요한 방식으로 다르다는 것이 밝혀졌습니다 . 일반적인 실행 프로세스 에서 더 많은 정보를 얻는 방법을 알고 싶습니다. 그래서 다른 점을 추측 하지 않습니다 .
Kevin Reid

2
@terdon 경험적으로 터미널에서 실행하는 것은 다릅니다. 시도했지만 다른 경우가있었습니다 (특히 다른 경우 PATH). 정상적인 시작 과 동일한 환경 이지만 더 많은 진단 정보 를 얻는 방법을 알고 싶습니다 .
Kevin Reid

2
약간 비논리적이지만 10 번의 9 번 문제는 공백과 같이 Exec=경로의 특수 문자 입니다. 기억, 당신은해야 Exec=따옴표와 Path=따옴표없이.
Barafu Albino

답변:


15

사용할 수있는 트릭이 있습니다. 애플리케이션을 시작하고 오류 출력을 캡처 할 랩퍼 스크립트를 작성하십시오.

#!/usr/bin/env bash

## Launch 'yourapp' and capture its standard error output
/path/to/yourapp 2>~/myapp.log

로 저장하고로 ~/foo.sh실행 가능하게 만드십시오 chmod +x ~/foo.sh. 이제 데스크톱 런처를 대신 가리 킵니다. 다음과 같은 것 :

[Desktop Entry]
Version=2.0
Type=Application
Exec=/home/kevin/foo.sh
Terminal=true
Comment=My app!

그러면 오류 메시지가 리디렉션 ~/myapp.log되고 여가 시간에 검사 할 수 있습니다. 2>>~/myapp.log파일을 덮어 쓰지 않고 연속적인 오류 메시지를 파일에 추가하려는 경우 사용할 수 있습니다 .


여담으로,이 이유 $PATH는 아마도 설정되어 있기 때문에 다른입니다 $PATH~/.bahsrc그래픽 환경에서 읽을 수 없습니다. $PATH새로운 터미널을 열 때마다 설정 되므로 오버 헤드가 불필요하기 때문에 나쁜 생각 입니다. ~/.profile대신에 이것을 사용하십시오 . 여기에서 볼 때 읽을 파일에 대한 자세한 내용 과 무엇을 위해 사용해야 할 파일에 대한 자세한 내용은 여기를 참조 하십시오 .


이 방법으로 문제를 찾지 못했지만 래퍼가 작동했기 때문에 래퍼를 실행 파일로 유지했습니다.
Jānis Elmeris

16

이 질문에 대한 답변을 여기서 찾으십시오 : https://askubuntu.com/a/836842

이 시도 :

desktop-file-validate my-app.desktop

.desktop파일에 오류를 출력 합니다. 예를 들어 mine은 다음을 반환했습니다.

error: first group is not "Desktrop Entry"

그래서 오타를 수정 Desktop Entry하면 스크립트가 성공적으로 실행되었습니다.


7

터미널에서 다음 명령을 실행하여 :

awk -F= '/Exec=/{system($2)}' your_desktop_file.desktop

Exec.desktop 파일 내부 에서 필드에 지정된 명령에 오류가 있는지 여부를 확인할 수 있습니다.


5
비슷한 문제가 있습니다. 명령을 실행하면 my.desktop 파일이 완벽하게 작동합니다. 내가 더블 클릭 할 때, 그것은 응용 프로그램을 실행하는 동안 오류가 발생했습니다 보여줍니다
Sayantan Koley

이 답변은 셸에서 Exec 값을 실행하는 것보다 훨씬 더 많이 생각하지는 않지만 TryExec 키가 내 문제 라는 것을 알았 기 때문에 재미 있었습니다.
mirh December

3

일반적으로 터미널 (출력)은 응용 프로그램과 데스크탑 파일 모두에 유용한 많은 정보를 제공합니다. 예 : 터미널에서 응용 프로그램을 실행하고 터미널에 명령을 입력하면 응용 프로그램이 시작됩니다.

그러나 잘못된 것이 있으면 다음과 같은 출력을 기대할 수 있습니다.

Traceback (most recent call last):
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa    /qle-2.1.2/code/qle_quicklisteditor", line 4044, in <module>
    MainWindow()
  File "/home/jacob/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code/qle_quicklisteditor", line 51, in __init__
    self.load_sectons()
AttributeError: 'MainWindow' object has no attribute 'load_sectons'
jacob@Jacobwerkkamer:~/Bureaublad/werkmap_2.0/uploaded_versions/2.1.2/32_en_ppa   /qle-2.1.2/code$ 

이로 인해 많은 유용한 정보를 얻을 수 있으며 응용 프로그램에서 오류를 발생시키는 행까지도 제공됩니다. (고의로 엉망으로 만들었습니다)

데스크톱 파일과 마찬가지로 .desktop 파일의 디렉토리에서 터미널을 열고 터미널로 끌어다 놓기 만하면됩니다. 예를 들어 Exec=.desktop 파일에서 행을 제거하면 터미널은 실행할 명령을 찾을 수 없다는 메시지를 표시합니다.

응용 프로그램에서 오류가 발생하는지 테스트하려면 Exec=문자열 뒤에 넣은 것을 실행하십시오 .

터미널 출력은 일반적으로 here 과 같이 매우 구체적이며 버그 보고서에 유용 합니다 .


2
터미널을 사용하는 방법과 일반적인 프로그램 시작 문제를 해결하는 방법에 대해 알고 있습니다. 이 접근법을 가정 할 때 알아야 할 것은 터미널에서 .desktop 실행 조건을 정확하게 재현하는 방법 입니다.
Kevin Reid


0

내가 실제로 그것을 알아낼 수 없을 때, 나는 :

cd ~/Desktop
ln -s /my/binary/thatIwanttorun mybinary

그런 다음 생성 된 기본 아이콘을 마우스 오른쪽 버튼으로 클릭하고 더 나은 그래픽을 가리 킵니다.


"cd ~ / Desktop"뒤에 <cr>이 있어야합니다.
Tom

-1

나에게 문제는 누락 된 Icon=줄 이었습니다 (작동하는 실행기의 어리석은 요구 사항처럼 보입니다). 내 전체 .desktop 파일은 다음과 같습니다.

[Desktop Entry]
Name=LiClipse
Comment=Variant of Eclipse
Exec=/home/tsbertalan/bin/liclipse
Terminal=true
Type=Application
Icon=/home/tsbertalan/usr/liclipse/icon.xpm

사용자의 변화에 ​​특히 강력하지는 않지만 무엇이든간에.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.