Je suis en train de comprendre pourquoi tous les appels API système Mac j'ai essayé d'appeler - ici CFStringCreateWithCString - dans Lazarus 1.6.4 course dans macOS Sierra 10.12.4 avec GDB 8.0 et GDB 7.12.1 et tout échoue avec:Lazarus problèmes de débogage avec Mac appel API (fonctionne autrement) - ne peut pas trouver les limites de la fonction actuelle
« le debugge et l'erreur rencontrée lors de l'exécution/l'étape de l'application Vous ne trouvez pas les limites de la fonction actuelle. »
et le débogueur saute hors de la fonction (ou si l'appel est entouré par try/except au code suivant l'sauf) - et plus tard après informe débogueur instable
...
Voici un exemple de code:
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;
- Je n'ai pas d'autres problèmes de débogage. Je peux passer à travers le code ne pas appeler les fonctions de l'API du système Mac très bien. Je suppose que les bibliothèques Lazarus/LCL/FPC appellent également des fonctions natives de l'API Mac , mais ce code est compilé différemment et fonctionne donc.
- Je cours au-dessus du code dans le fil principal.
- Ce problème semble se produire pour plusieurs appels d'API Mac, j'ai essayé, donc je pense qu'il peut être un débogueur (GDB)/Lazarus d'un sort.
Note: Je suis conscient qu'il pourrait y avoir des problèmes de débogage avec macOS Sierra 10.12.5 qui est la raison pour laquelle je ne l'ai pas mis à jour encore.
Pourrait-il être un problème avec SIP/adresse de relocalisation/similaire?
- En Debugger_Start_options J'ai ajouté "--eval-commande = ensemble démarrage avec coquille off".
- J'ai également signé GDB bien sûr.
- J'utilise homebrew pour les installations GDB