metaclass: (Default)
[personal profile] metaclass
Ради тренировки мозга сделал модуль на хаскеле с функциями для трассировки с помощью виндовской OutputDebugString:
ODS

FFI не так уж и пугающе выглядит. Хотя насчет того, не умрет ли это все в многопоточном приложении, если вызвать unsafe версии - уверенности никакой нет.


module ODSTrace (trace) where

import System.IO.Unsafe
import Foreign.C.String

putTraceMsg :: String -> IO ()
putTraceMsg msg = do
withCString msg $ \cmsg ->
ods cmsg

foreign import stdcall unsafe "windows.h OutputDebugStringA"
ods :: CString -> IO ()

trace :: String -> a -> a
trace string expr = unsafePerformIO $ do
putTraceMsg string
return expr

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 02:51 am
Powered by Dreamwidth Studios