[英]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.