Ich versuche, eine Funktion aus einer Open Source-Bibliothek zu verwenden. Diese Funktion wird standardmäßig nicht von außen offen gelegt (daher nehme ich an, dass es sich nicht um eine direkt von der Open Source Bibliothek bereitgestellte Funktion handelt), aber ich brauche diese Funktion, um ein Problem in meinem Code zu lösen, also habe ich einige Änderungen in Makefile vorgenommen Funktion aus der Bibliothek.So finden Sie, ob eine Funktion reentrant ist
Jetzt ist die Frage, wie Sie sicherstellen, dass diese Funktion einspringt.
Ich bin nicht in der Lage, mit dem bloßen Auge herauszufinden, weil es eine Reihe von Funktionen intern aufruft.
Um genau zu sein Ich bin neugierig zu wissen, ob es ein Werkzeug zur Verfügung oder eine Option in GDB zu prüfen, ob meine Funktion nur lokale Variablen und es ändert keine globalen Variablen.
Wenn Sie sich unsicher sind und Änderungen vornehmen können (so wie es aussieht), stellen Sie die Funktion nicht mit statischen Mutex ein. –
können Sie den disassemblierten Code überprüfen. es ist aber wahrscheinlich nicht die Mühe wert ... –
Sie könnten einfach die Funktion aufrufen und einen Interrupt aufrufen und die Funktion erneut aufrufen und sehen, was passiert. Wenn es sich schlecht verhält. –