2017-07-03 6 views
2

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

Répondre

1

Oui, il y a effectivement des problèmes de débogage avec la Sierra (je ne sais pas si elles sont limitées à 10.12.5, cependant).

Je cours 10.12.6 et j'ai eu des résultats utiles en utilisant LLDB fonctionnant sous Xcode pour déboguer mes applications Lazarus/FPC.

Jetez un oeil à cette page https://macpgmr.github.io/ObjP/ProjectXC.html pour savoir comment y parvenir.

J'ai aussi étudié les possibilités d'utiliser OmniPascal et VSCode sur Mac combinés avec LLDB pour atteindre les mêmes objectifs, mais d'une manière bien plus jolie!

Vous pouvez vouloir suivre cette OS pour voir si j'ai des réponses à cette question How do I get OmniPascal to integrate with LLDB on the macOS 10.12.6