Làm cách nào để tôi chẩn đoán được Có lỗi khi khởi chạy ứng dụng này?


26

Tôi đã tạo một my-app.desktoptập tin cho một chương trình tôi đã viết. Khi tôi bấm đúp vào nó, tôi nhận được thông báo lỗi " Có lỗi khi khởi chạy ứng dụng ". Làm thế nào tôi có thể nhận được thông tin chi tiết hơn về vấn đề là gì?

Tôi đã thấy một tham chiếu đến phần "chi tiết" của hộp thoại, nhưng không có gì giống như trong phần tôi thấy. Nếu tôi ở trên máy Mac, tôi sẽ mở ứng dụng Console để xem có lỗi nào được ghi lại không, nhưng tôi chưa học được điều gì tương tự trên Ubuntu.

(Lưu ý rằng không giống như các câu hỏi có cùng tiêu đề khác, tôi không hỏi có vấn đề gì với tệp .desktop cụ thể này; tôi muốn biết cách tìm hiểu chung.)


1
Tôi sẽ chỉ chạy dòng Exec từ thiết bị đầu cuối và xem những gì đầu ra nói với bạn, nhưng bạn có chắc rằng tệp máy tính để bàn vẫn ổn không? có lẽ bạn cũng nên kiểm tra và chạy nó từ terminal.
Jacob Vlijm

@Jacob Nếu có một cách để "chạy nó từ thiết bị đầu cuối" đặt một cái gì đó hữu ích trên stderr, thì đó sẽ là một câu trả lời cho câu hỏi này.
Kevin Reid

1
@terdon Tôi đã thử điều đó, và hóa ra (như vấn đề tiếp theo ) môi trường khác biệt theo cách quan trọng. Tôi muốn biết làm thế nào để có thêm thông tin từ quy trình khởi chạy thông thường để tôi không đoán được điều gì khác biệt.
Kevin Reid

2
@terdon Theo kinh nghiệm, chạy nó trong thiết bị đầu cuối là khác nhau - Tôi đã thử và nó khác (đặc biệt là khác PATH). Tôi muốn biết làm thế nào để có được chính xác môi trường giống như một khởi chạy bình thường nhưng có nhiều thông tin chẩn đoán hơn.
Kevin Reid

2
Một chút khác thường, nhưng 9 lần trong số 10 vấn đề phát sóng đó là các ký tự đặc biệt, như khoảng trắng, trên Exec=đường dẫn. Hãy nhớ rằng, bạn nên có Exec=dấu ngoặc kép và Path=không có dấu ngoặc kép.
Barafu Albino

Câu trả lời:


15

Đây là một mẹo bạn có thể sử dụng. Tạo tập lệnh bao bọc cho ứng dụng của bạn sẽ khởi chạy nó và ghi lại đầu ra lỗi:

#!/usr/bin/env bash

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

Lưu nó như ~/foo.shvà làm cho nó thực thi với chmod +x ~/foo.sh. Bây giờ, hãy trỏ trình khởi chạy máy tính để bàn của bạn vào nó để thay thế. Cái gì đó như:

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

Điều đó sẽ chuyển hướng bất kỳ thông báo lỗi đến ~/myapp.logvà bạn có thể kiểm tra chúng lúc rảnh rỗi. Bạn có thể sử dụng 2>>~/myapp.lognếu bạn muốn các thông báo lỗi liên tiếp được thêm vào tệp thay vì ghi đè lên nó.


Bên cạnh đó, lý do $PATHkhác biệt là bởi vì có lẽ bạn đang đặt $PATHtrong ~/.bahsrcđó không được đọc bởi môi trường đồ họa. Đó cũng là một ý tưởng tồi vì $PATHnó sẽ được đặt mỗi khi bạn mở một thiết bị đầu cuối mới và đó là không cần thiết. Sử dụng ~/.profilecho việc này thay thế. Để biết thêm chi tiết về tập tin nào được đọc khi xem tại đây và để biết thêm về tập tin nào sẽ được sử dụng cho mục đích gì, hãy xem tại đây .


Không tìm thấy vấn đề theo cách này, nhưng trình bao bọc đang hoạt động, vì vậy tôi chỉ giữ trình bao bọc là tệp thực thi.
Jāni Elmeris

16

Tìm thấy câu trả lời cho câu hỏi này tại đây: https://askubfox.com/a/836842

Thử đi :

desktop-file-validate my-app.desktop

Nó xuất ra lỗi trong .desktoptập tin của bạn . Ví dụ tôi đã trả lại:

error: first group is not "Desktrop Entry"

Vì vậy, một khi tôi sửa lỗi chính tả Desktop Entry, kịch bản đã chạy thành công.


7

Bằng cách chạy lệnh sau trong terminal:

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

Tôi chắc chắn rằng bạn sẽ tìm ra nếu có lỗi hay không trong lệnh của bạn được gán cho Exectrường từ bên trong tệp .desktop của bạn.


5
Tôi có một vấn đề tương tự. tôi thực thi lệnh của bạn và tập tin my.desktop hoạt động hoàn hảo. Nhưng khi tôi nhấp đúp chuột vào nó, nó hiển thị Có lỗi khi khởi chạy ứng dụng
Sayantan Koley

Câu trả lời này khá buồn cười, vì (mặc dù tôi không nghĩ nó làm gì nhiều - nhiều hơn là chạy giá trị Exec trong shell) nó khiến tôi nhận ra khóa TryExec là vấn đề của tôi.
mirh

3

thông thường, thiết bị đầu cuối (-output) cung cấp cho bạn rất nhiều thông tin hữu ích, cả trên ứng dụng cũng như tệp máy tính để bàn. Một ví dụ: nếu tôi chạy ứng dụng của mình từ thiết bị đầu cuối, gõ lệnh trong thiết bị đầu cuối, ứng dụng sẽ khởi động.

Tuy nhiên, nếu có điều gì đó sai, bạn có thể mong đợi một đầu ra như:

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$ 

cung cấp cho bạn rất nhiều thông tin hữu ích, thậm chí cả dòng trong ứng dụng của bạn gây ra lỗi. (Tôi đã làm hỏng nó trên mục đích)

Tương tự với tệp máy tính để bàn, chỉ cần mở một thiết bị đầu cuối trong thư mục của tệp .desktop và kéo nó vào thiết bị đầu cuối. Ví dụ, nếu bạn xóa Exec=dòng khỏi tệp .desktop, thiết bị đầu cuối sẽ cho bạn biết nó không thể tìm thấy lệnh để thực thi.

Để kiểm tra xem ứng dụng có lỗi hay không, chỉ cần chạy những gì bạn đặt sau Exec=chuỗi.

Đầu ra thiết bị đầu cuối thường rất cụ thể và hữu ích trong các báo cáo lỗi, như ở đây .


2
Tôi biết về cách sử dụng thiết bị đầu cuối và cách khắc phục sự cố khởi chạy chương trình nói chung. Giả sử cách tiếp cận này, điều tôi cần biết là làm thế nào để tái tạo các điều kiện của một khởi động .desktop chính xác trong thiết bị đầu cuối .
Kevin Reid


0

Khi tôi thực sự không thể tìm ra nó, tôi:

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

Sau đó nhấp chuột phải vào biểu tượng mặc định đã được tạo và trỏ đến một đồ họa tốt hơn.


và nên có một <cr> sau "cd ~ / Desktop"
Tom

-1

Đối với tôi, vấn đề là một Icon=dòng bị thiếu (có vẻ như là một yêu cầu ngu ngốc đối với một launcher hoạt động). Tệp .desktop đầy đủ của tôi bây giờ trông như sau:

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

Điều này không đặc biệt mạnh mẽ đối với những thay đổi của người dùng, nhưng bất cứ điều gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.