簡體   English   中英

如何在C DLL中使用斷言

[英]How to use assert in c dll

我使用的是遺留的C Dll(我有源代碼),它具有分散在程序中的許多斷言。 該dll由C#Windows應用程序使用。

問題是當DLL中出現錯誤時,“斷言失敗”將永遠不會出現。 Dll是一個控制台應用程序(不確定是否相關)。 有許多斷言,而AFAIK沒有簡單的方法就可以在不添加大量額外代碼的情況下將錯誤消息(或標志)返回到C#應用程序。

有沒有辦法將斷言的輸出強制到屏幕?

檢查C庫中assert()宏的定義。 它通常具有“可插拔”輸出機制。 最壞的情況是您必須自己重寫assert()

潛在的問題是控制台程序有2個輸出流:正常和錯誤。 System.Diagnostics.Process類具有StandardError屬性,該屬性可用於攔截寫入stderror流的消息。

請注意,定義NDEBUG將關閉斷言機制。 該標識符是在發布版本(/ D-option)中默認定義的。 檢查斷言是否在dll的調試版本中起作用,如果是,則編輯發布項目設置以刪除/ D選項或任何NDEBUG定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM