================
@@ -0,0 +1,57 @@
+// REQUIRES: target-windows
+// RUN: %build --compiler=clang-cl -o %t.exe -- %s
+// RUN: %lldb -f %t.exe -o "log enable windows process" -o r -o q | FileCheck
%s
+
+#include <Windows.h>
+#include <string>
+
+int main() {
+ OutputDebugStringA("My string\nnext line\nBut this doesn't have trailing
newline|");
+ OutputDebugStringW(L"OutputDebugStringW with some emojis 🦎🐊🐢🐍\n");
+ OutputDebugStringW(L"Another W1\n");
+ OutputDebugStringW(L"Another W2\n");
+ OutputDebugStringA("Some A1\n");
+ OutputDebugStringA("Some A2\n");
+ OutputDebugStringA("Some A3\n");
+
+ std::wstring maxW((1 << 19) - 4, L'A');
+ maxW.push_back(L'B');
+ maxW.push_back(L'\n');
+ OutputDebugStringW(maxW.c_str());
+
+ Sleep(100);
----------------
DavidSpickett wrote:
Could you explain how the timing works? I suppose there is some delay between
the program calling OutputDebugStringW and LLDB picking up the debug event?
So if you have:
```
OutputDebugStringW(message A);
A:
OutputDebugStringW(message B);
B:
```
If LLDB decides to read messages at A, it will only see message A, but if the
event comes in later it will see message A and message B. The timing of the
event is up to Windows so by waiting we expect that it will generate the event
in that time.
Would it be possible to do this without the sleeps? If you were to `CHECK`
instead of `CHECK-NEXT`. What do you lose if you are not so strict?
Though if the larger messages push the others out of the limited message buffer
(if it is in fact limited) then this idea does not work. You have to read out
all the small messages as you currently do, then send the large ones.
https://github.com/llvm/llvm-project/pull/196395
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits