我正在尝试解决为什么我尝试调用的所有Mac系统API调用 - 这里 CFStringCreateWithCString - 在使用GDB 8.0和GDB 7.12的macOS Sierra 10.12.4中运行的Lazarus 1.6.4中。 1并且全部失败:
“尝试运行/步进应用程序时遇到调试问题并出错。无法找到当前函数的边界”
并且调试器跳出函数(或,如果调用被尝试/除包围到除之后的代码) - 之后通知调试器不稳定
...
以下是示例代码:
procedure myTest;
var
TestStrUTF8: UTF8String;
TmpStrPr_CSS: ConstCStringPtr;
TmpCFStrRef: CFStringRef;
TmpStrPtr: Pointer;
begin
TestStrUTF8 := 'http://example.com';
TmpStrPtr := Pointer(TestStrUTF8)
TmpStrPtr_CSS := ConstCStringPtr(TmpStrPtr);
TmpCFStrRef := CStringCreateWithCString(nil, TmpStrPtr_CSS, kCFStringEncodinguTF8); // Note1: we are only using ASCII, Note2: We have tried KCFStringEncodingWindowsLatin1 with same problem
// jumps out of routine and reports "Cannot find bounds of current function" here
showmessage('never reaches, crashes first');
end;
注意:我知道macOS Sierra 10.12.5可能存在调试问题,这就是我尚未升级的原因。
他的SIP /地址重定位/类似问题会出现问题吗?
答案 0 :(得分:1)
是的,Sierra确实存在调试器问题(我不知道它们是否仅限于10.12.5)。
我正在运行10.12.6并且使用在Xcode下运行的LLDB来调试我的Lazarus / FPC应用程序,我得到了有用的结果。
有关如何实现此目的,请查看此页面https://macpgmr.github.io/ObjP/ProjectXC.html。
我也一直在研究在Mac上结合LLDB使用OmniPascal和VSCode实现相同目的的可能性,但是以更加漂亮的方式!
您可能想要关注此SO问题,看看我是否得到关于此How do I get OmniPascal to integrate with LLDB on the macOS 10.12.6
的任何答案