Share via


Çıkış kodları

Azure Sphere üst düzey uygulaması, kodun neresinde hata oluştuğu ve neden oluştuğuyla ilgili bilgileri döndürmek için çıkış kodlarını kullanabilir. Çıkış kodu 0 ile 255 arasında bir değere karşılık gelir ve burada 0 başarıyı gösterir.

Uygulamada çıkış kodlarını tanımlama ve kullanma

Bir uygulamada çıkış kodlarını tanımlamak ve kullanmak için şu yönergeleri izleyin:

  • Bir çıkış kodu değişkeni oluşturun ve uygulamanın başlangıcında başarılı (0) olarak başlatın.
  • Bir hatanın uygulamanın çıkışına neden olduğu herhangi bir işlevden çıkış kodu döndürür. İşlev çıkış kodları, işletimsel hatalar hakkında ayrıntılı bilgi sağlayabilir. Örneğin, bir IoT Central uygulamasına ileti gönderen bir işlev, hatanın nerede oluştuğuyla ilgili ayrıntıları sağlayan bir hata kodu döndürebilir: ileti oluşturma, IoT bağlantısı, ileti iletimi vb. Çevre birimlerini başlatmakla sorumlu farklı bir işlev, belirli bir çevre birimiyle ilgili bir hatayı göstermek için benzersiz bir çıkış kodu döndürür.
  • Hata çıkış kodu (sıfır olmayan) bir işlev tarafından ayarlandıysa veya döndürüldüyse, ana işlevin döndürülmesi için hemen geri yayıldığından emin olun. Bu, uygulamanın verilen çıkış koduyla çıkmasını sağlar. Azure Sphere işletim sistemi uygulamanızı hemen yeniden başlatır (hata ayıklayıcısını bağlı bir geliştirme panosuyla kullanmadığınız sürece) ve hata raporlarını kullanarak çıkış tahakkuk ettirilmenin nedenini tanılayabilirsiniz.

Hata raporları

Üst düzey bir uygulamadan çıkıldığında, Azure Sphere işletim sistemi uygulamanız tarafından döndürülen çıkış kodunu günlüğe kaydeder ve daha sonra bu bilgileri içeren bir hata raporunu her gün Azure Sphere Güvenlik Hizmeti'ne yükler. Hata raporundaki çıkış kodunu uygulamanızda tanımlanan çıkış kodlarıyla karşılaştırarak genellikle hatanın konumunu ve nedenini belirleyebilirsiniz. Daha fazla bilgi için bkz. AppExits'i yorumlama .

RTApps hata verilerini doğrudan Azure Sphere Güvenlik Hizmeti'ne döndüremez. RtApp'te hata izleme uygulamak istiyorsanız, çekirdekler arası iletişim mekanizmasını kullanarak hata verilerini RTApp'ten üst düzey bir uygulamaya iletmeniz gerekir. Ayrıntılar için bkz. Üst düzey bir uygulamaylailetişim kurma ve Gerçek zamanlı özellikli bir uygulamayla iletişim kurma .

Örnek çıkış kodu uygulaması

Aşağıdaki kod parçacıkları, çıkış kodlarını üst düzey bir uygulamaya nasıl ekleyebileceğinize ilişkin bir örnek gösterir.

İlk olarak, uygulamanızda belirli çıkış kodu değerlerinizin tümünü tanımlamak için kullanabileceğiniz bir ExitCode sabit listesi bildirin. Ardından, başarı durumuna (0) bir genel exitCode değişken başlatın.

// Exit codes for this application.
typedef enum {
ExitCode_Success = 0;
ExitCode_Init_LED = 1;
ExitCode_Init_Button = 2;
} ExitCode;

// Initialize the termination state.
static volatile sig_atomic_t exitCode = ExitCode_Success;

Uygulamayı sonlandırması gereken hata durumlarını içeren işlevler bir ExitCode sabit listesi döndürmelidir. Uygulamayı sonlandırması gereken bir hata olayına ulaşılırsa, bu durum için tanımladığınız özel çıkış kodunu döndürür. Aşağıdaki örnekte, InitPeripheralsAndHandlers bir LED ve düğme başlatan işlev tanımlanmıştır. Başlatmalardan biri başarısız olursa, yukarıda tanımlanan karşılık gelen ExitCode değer döndürülür.

// Initialize the peripherals and handlers. Return ExitCode_Success if all resources were allocated
// successfully; otherwise another ExitCode value which indicates a specific failure.
static ExitCode InitPeripheralsAndHandler(void)
{
	// Open SAMPLE_LED as output.
	led = GPIO_OpenAsOutput(SAMPLE_LED);
	if (led == -1) {
		return ExitCode_Init_LED;
	}

	// Open SAMPLE_BUTTON as input.
	button = GPIO_OpenAsInput(SAMPLE_BUTTON);
	if (button == -1) {
		return ExitCode_Init_Button;
	}
	return ExitCode_Success;
}

Başlatmadan sonra, genel exitCode değişkene ilk başarı değeri atandığı sürece uygulama ana döngüde kalır. Ana uygulama mantığının herhangi bir bölümü değişkeni başarı dışında bir değere ayarlarsa exitCode , uygulama ana döngüden çıkar ve kümesiyle exitCodeçıkar. Azure Sphere işletim sistemi, uygulama çıkış olayını ve buna karşılık gelen çıkış kodunu bir hata raporunda yakalar ve ardından uygulamanızı yeniden başlatır.

int main(int argc, char* argv[])
{
	exitCode = InitPeripheralsAndHandler();

	while (exitCode == ExitCode_Success) {
		// Run other application functions within this loop.
		// When a function encounters an error, set a corresponding exit code and return from that function.
		// This will break out of the while loop if the exit code is not ExitCode_Success.
	}

	return exitCode;
}